本篇延续过往手动安装方式来部署 Kubernetes v1.11.x 版本的 High Availability 集群,而此次教学将直接透过裸机进行部署 Kubernetes 集群。以手动安装的目标是学习 Kubernetes 各组件关析、流程、设定与部署方式。若不想这么累的话,可以参考 Picking the Right Solution 来选择自己最喜欢的方式。
Kubernetes部署信息
Kubernetes部署的版本信息:
- Kubernetes: v1.11.0
- CNI: v0.7.1
- Etcd: v3.3.8
- Docker: v18.05.0-ce
- Calico: v3.1
Kubernetes部署的网路信息:
- Cluster IP CIDR: 10.244.0.0/16
- Service Cluster IP CIDR: 10.96.0.0/12
- Service DNS IP: 10.96.0.10
- DNS DN: cluster.local
- Kubernetes API VIP: 172.22.132.9
- Kubernetes Ingress VIP: 172.22.132.8
节点信息
本教程采用以下节点数与机器规格进行部署裸机(Bare-metal),操作系统采用Ubuntu 16+(理论上 CentOS 7+ 也行)进行测试:
IP Address | Hostname | CPU | Memory | Extra Device |
---|---|---|---|---|
172.22.132.10 | K8S-M1 | 4 | 16G | None |
172.22.132.11 | K8S-M2 | 4 | 16G | None |
172.22.132.12 | K8S-M3 | 4 | 16G | None |
172.22.132.13 | K8S-G1 | 4 | 16G | GTX 1060 3G |
172.22.132.14 | K8S-G2 | 4 | 16G | GTX 1060 3G |
另外由所有 master 节点提供一组 VIP 172.22.132.9。
- 这边m为 K8s Master 节点,g为 K8s Node 节点。
- 所有操作全部用root使用者进行,主要方便部署用。
事前准备
开始部署集群前需先确保以下条件已达成:
- 所有节点彼此网络互通,并且k8s-m1 SSH 登入其他节点为 passwdless,由于过程中很多会在某台节点(k8s-m1)上以 SSH 复制与操作其他节点。
- 确认所有防火墙与 SELinux 已关闭。如 CentOS:
$ systemctl stop firewalld && systemctl disable firewalld $ setenforce 0 $ vim /etc/selinux/config SELINUX=disabled
关闭是为了方便安装使用,若有需要防火墙可以参考 Required ports 来设定。
- 所有节点需要设定/etc/hosts解析到所有集群主机。
... 172.22.132.10 k8s-m1 172.22.132.11 k8s-m2 172.22.132.12 k8s-m3 172.22.132.13 k8s-g1 172.22.132.14 k8s-g2
- 所有节点需要安装 Docker CE 版本的容器引擎:
$ curl -fsSL https://get.docker.com/ | sh
不管是在 Ubuntu 或 CentOS 都只需要执行该指令就会自动安装最新版 Docker。
CentOS 安装完成后,需要再执行以下指令:$ systemctl enable docker && systemctl start docker
- 所有节点需要设定以下系统参数。
$ cat