「Kubernetes」- 通过 RKE 创建高可用 Kubernetes 集群

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:通过 RKE 快速部署 Kubernetes Cluster 的流程,以及相关问题的解决方案。

解决方案

参考 Rancher Docs/RKE Kubernetes Installation 文档,以获取详细的部署及维护细节,该笔记仅包含部署过程的概述。

第一步、准备节点

配置 Kernel 参数:

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

安装 Docker 服务:Docker 20.10.1

第二步、安装工具

安装 RKE 命令:rke_linux-amd64 v1.3.15

第三步、定义配置

Upgrade from k8s v1.23 to v1.24 fails due to restarting kubelet. · Issue #38160 · rancher/rancher

通过 rke config 命令,来创建集群(按照提示填写参数即可):

# rke config --name cluster.yml                                    
[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]:            
[+] Number of Hosts [1]: 5
...

# vim cluster.yaml
...
... enable_cri_dockerd: true
...

补充说明:
1)定义多个 control-plane 节点,则当通过 RKE 部署集群时会自动部署高可用。

其他常用命令:

// 查看 rke 支持 Kubernetes Cluster 版本:

# rke config --list-version --all
v1.18.20-rancher1-3
v1.19.16-rancher2-1
v1.22.13-rancher1-1
v1.23.10-rancher1-1
v1.21.14-rancher1-1
v1.24.4-rancher1-1
v1.20.15-rancher2-2

// 查看相关镜像的版本

# rke config --system-images --version v1.22.13-rancher1-1                                                                             
INFO[0000] Generating images list for version [v1.22.13-rancher1-1]: 
rancher/mirrored-coreos-etcd:v3.5.3
rancher/rke-tools:v0.1.87                       

第四步、启动集群

# rke up 
...       
INFO[0200] Finished building Kubernetes cluster successfully

# kubectl --kubeconfig ./kube_config_cluster.yml get nodes
NAME              STATUS   ROLES               AGE   VERSION
192.168.160.121   Ready    controlplane,etcd   20m   v1.24.4
192.168.160.122   Ready    controlplane,etcd   20m   v1.24.4
192.168.160.123   Ready    controlplane,etcd   20m   v1.24.4
192.168.160.124   Ready    worker              20m   v1.24.4
192.168.160.125   Ready    worker              20m   v1.24.4

第五步、后续工作

注意保留 cluster.rkestate cluster.yml kube_config_cluster.yml 三个文件,以用于后续的集群维护及部署;

补充说明

关于其高可用实现的方式

Control Plane 01 <----     ---<-- Nginx Proxy <----- Worker 01 / Kubelet
                      \   /
Control Plane 02 <------<-----<-- Nginx Proxy <----- Worker 02 / Kubelet
                      /   \
Control Plane 03 <----     ---<-- Nginx Proxy <----- Worker 03 / Kubelet

参考文献

rancher/rke: Rancher Kubernetes Engine (RKE)…
Rancher Docs: Upgrades
Putting up a Rancher Kubernetes Cluster on Bare Metal | by Greg Grubbs | Medium