一.Kubernetes简介
(一)在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用
(二)Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训
(三)Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户
(四)Kubernetes的好处:
1.隐藏资源管理和错误处理,用户仅需要关注应用的开发
2.服务高可用、高可靠
3.可将负载运行在由成千上万的机器联合而成的集群中
二.kubernetes设计架构
(一)Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统
(二)Kubernetes主要由以下几个核心组件组成
etcd:保存了整个集群的状态
apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡
(三)除了核心组件,还有一些推荐的Add-ons:
kube-dns:负责为整个集群提供DNS服务
Ingress Controller:为服务提供外网入口
Heapster:提供资源监控
Dashboard:提供GUI
Federation:提供跨可用区的集群
Fluentd-elasticsearch:提供集群日志采集、存储与查询
(四)Kubernetes设计理念和功能其实就是一个类似Linux的分层架构
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
三.Kubernetes部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30关闭节点的selinux和iptables防火墙 所有节点部署docker引擎 server2 3 4 vim /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 sysctl --system cd /etc/systemd/system/docker.service.d #因为之前部署的machine,有冲突 rm -f * yum remove docker-ce -y yum install docker-ce -y vim /etc/docker/daemon.json { "registry-mirrors": ["https://reg.westos.org"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } systemctl daemon-reload systemctl enable --now docker docker info
官网
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18server2 3 4 swapoff -a #禁用swap分区 vim /etc/fstab #注释掉/etc/fstab文件中的swap定义 vim /etc/yum.repos.d/k8s.repo #安装部署软件kubeadm [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 yum install kubelet kubeadm kubectl -y systemctl enable --now kubelet scp /etc/yum.repos.d/k8s.repo server3:/etc/yum.repos.d/ #还有4 server2 kubeadm config print init-defaults #查看默认配置信息 kubeadm config images list --image-repository registry.aliyuncs.com/google_containers #列出所需镜像;默认从k8s.gcr.io上下载组件镜像,需要翻墙才可以,所以需要修改镜像仓库 kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers #拉取镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers #初始化集群;--pod-network-cidr=10.244.0.0/16使用flannel网络组件时必须添加 --kubernetes-version指定k8s安装版本;注意cpu2个,内存2048M mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config kubectl get node kubectl get ns #命名空间 kubectl get cs echo "source <(kubectl completion bash)" >> ~/.bashrc #tab补齐,需退出重新登陆 配置kubectl;此处做实验用的是超户,此次不需要 useradd kubeadm vim /etc/sudoers kubeadm ALL=(ALL) NOPASSWD: ALL mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
其他网络组件
1
2
3
4
5kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #外网上的.需要翻墙 get kube-flannel.yml kubectl apply -f kube-flannel.yml #安装flannel网络组件 kubectl get pod --namespace kube-system
1
2
3
4
5
6
7
8
9
10
11
12
13server2 docker save quay.io/coreos/flannel:v0.12.0-amd64 registry.aliyuncs.com/google_containers/pause:3.2 registry.aliyuncs.com/google_containers/coredns:1.7.0 registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2 > node.tar server3 4 docker load -i node.tar kubeadm join 172.25.2.2:6443 --token n8wssz.mpmtxt1s6g0ss4w4 --discovery-token-ca-cert-hash sha256:2c7c5ed8cdc0e47121a316ccf2f8ec3470683ee0fc65a9521fe04dca92fd7783 #节点扩容 server2 #Master查看状态 kubectl get cs kubectl get nodes kubectl get pod -n kube-system
kubectl命令指南
最后
以上就是甜美美女最近收集整理的关于Kubernetes集群部署一.Kubernetes简介二.kubernetes设计架构三.Kubernetes部署的全部内容,更多相关Kubernetes集群部署一内容请搜索靠谱客的其他文章。
发表评论 取消回复