简介
Kubernetes
由Google
在2014
年6
月开源的一个容器集群部署与管理系统,简称为K8S
。Kubernetes
由Google
内部的Borg
容器集群部署和管理系统衍生而来,使用Go
语言开发。Kubernetes
是一个可以移植、可扩展的开源平台,使用声明式的配置
并依据配置信息自动地执行容器化应用程序的管理。Kubernetes
主要用于自动化部署、扩展和管理容器应用,提供资源的调度、部署管理、服务发现、扩容缩容、运维监控等一整套功能。
介绍集群
文档
GitHub
:《传送门》。- 版本策略:《传送门》
- 高可用集群:《传送门》
版本
OS
:CentOS 7.7
Etcd
:3.4.3
Calico
:3.13.2
CoreDNS
:1.6.5
Docker
:19.03.8
Kubernetes
:1.17.5
要求
- 每个节点的操作系统版本为
CentOS 7.7
。 - 每个节点至少拥有
2
个CPU
、2G
的RAM
。 - 每个节点的主机名都是唯一的,并且不包含下划线、小数点、大写字母。
- 每个节点都有固定的
IP
地址,并且节点之间能相互通信。 - 每个节点都关闭了
swap
分区,此要求从K8S v1.8
开始实施。 - 每个
Master
节点需安装docker
、kubeadm
、kubectl
、kubelet
。 - 每个
Node
节点需安装docker
、kubeadm
、kubelet
。
规划
IP | 角色 | 组件 |
---|---|---|
172.18.20.10 | Master | etcd、calico、kube-apiserver、kube-controller-manager、kube-scheduler |
172.18.20.11 | Master | etcd、calico、kube-apiserver、kube-controller-manager、kube-scheduler |
172.18.20.12 | Master | etcd、calico、kube-apiserver、kube-controller-manager、kube-scheduler |
172.18.20.13 | Node | calico、kube-proxy、kubelet |
172.18.20.14 | Node | calico、kube-proxy、kubelet |
172.18.20.15 | Node | calico、kube-proxy、kubelet |
部署集群
SetUP
- 更换国内软件源: 《CentOS/Ubuntu的国内软件源》。
1 | # 关闭SELinux |
Docker
请参考《Linux上安装Docker》完成
Docker
的安装。配置守护进程:
1 | mkdir -p /etc/docker |
1 | { |
1 | systemctl enable docker.service |
Kubernetes
Package
1 | vim /etc/yum.repos.d/kubernetes.repo |
1 | [kubernetes] |
1 | # 更新软件源 |
LoadBalancer
- 高可用集群要为
Master
节点的kube-apiserver
创建LoadBalancer
(负载均衡器),此处通过在QingCloud
(青云),创建LB
实现。

- 首先创建监听器,选择
TCP
协议,端口为6443
,然后将所有的Master
节点添加为工作后端
。 - 这些
Master
节点的初始状态都为不可用
状态,当初始化完成后,就变为活跃
状态了。
Master
- 初始化首个
Master
节点:
1 | kubeadm init \ |
- 拷贝配置文件:
1 | mkdir -p /root/.kube |
- 继续添加
Master
节点:
1 | kubeadm join 172.18.20.100:6443 \ |
- 拷贝配置文件:
1 | mkdir -p /root/.kube |
- 获取节点信息,
Master
节点状态为NotReady
:
1 | kubectl get nodes |
- 因为没有为集群部署容器网络接口
CNI
,所以节点状态是NotReady
,基于Pod
的网络插件:Calico
、Flannel
等。
Calico
- 下载配置文件:
1 | # GitHub: https://github.com/projectcalico/calico |
- 应用
yaml
文件:
1 | kubectl apply -f calico.yaml |
- 获取节点信息,
Master
节点状态为Ready
:
1 | kubectl get nodes |

Node
- 将自身加入到集群中:
1 | kubeadm join 172.18.20.100:6443 \ |
- 由于令牌(
Token
)有效期为24
小时,若过了有效期,还需添加Node
节点,则需要重新创建令牌。
Master
- 给节点设置
Lable
:
1 | kubectl label nodes node-1 node-role.kubernetes.io/node= |
- 获取节点信息,总共有
3
个节点,节点状态都为Ready
:
1 | kubectl get nodes |

Dashboard
- 此处不部署官方的
Dashboard
,若需要官方的Dashboard
,请参考《快速部署K8S单主集群》。 - 此处选择部署
Kuboard
图形化管理界面,请查看文档《Kuboard管理界面》。 - 在
LoadBalancer
上创建新的监听器,为Kuboard
图形化管理界面做高可用。
