K8S 集群添加或删除节点
Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pods 所需的服务; 这些节点由控制面负责管理。
通常集群中会有若干个节点;而在一个学习用或者资源受限的环境中,你的集群中也可能 只有一个节点。
节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。
K8S 集群添加新节点
添加 master 节点
Step 1)上传控制平面证书,kubeadm 会把控制平面证书文件保存在 kube-system
命名空间下一个名为 kubeadm-certs
的 secret 中
$ kubeadm init phase upload-certs --upload-certs
该命令会自动生成一个新的控制面证书密钥(即 certificate key),新 master 加入集群需要使用这个 certificate key 以自动完成控制面证书复制。certificate key 是用于加密 kubeadm-certs
Secret 中的控制平面证书的密钥。
如果存在多种容器运行时的集群执行上面的命令会报错,
kubeadm init phase
不支持传入--cri-socket
参数。可以用如下的方式:
打印用于 ‘kubeadm init’ 的默认 init 配置文件 kubeadm-config
$ kubeadm config print init-defaults > kubeadm-config.yaml
advertiseAddress
修改为 master ip 地址,删除ClusterConfiguration
段的配置生成 certificate key
$ kubeadm init phase upload-certs --upload-certs --config kubeadm-config.yaml [upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace [upload-certs] Using certificate key: 1bc6223367a3ba58645eff7d64ede4e5f49804eb4ba3dbe04aac0ea52f83702a
Step 2)创建引导令牌并打印作为控制平面加入集群所需的完整 ‘kubeadm join’ 参数
$ kubeadm token create --print-join-command --certificate-key 1bc6223367a3ba58645eff7d64ede4e5f49804eb4ba3dbe04aac0ea52f83702a
kubeadm join 192.168.20.17:6443 --token tyh701.zk5atsbriqjtp7ji --discovery-token-ca-cert-hash sha256:69b775501c9439b807e64a99df1d075f175cd1d8a06c1a882d1da7badbf7a503 --control-plane --certificate-key 1bc6223367a3ba58645eff7d64ede4e5f49804eb4ba3dbe04aac0ea52f83702a
Step 3)新节点上执行上面生成的 ‘kubeadm join’ 命令加入集群
$ kubeadm join 192.168.20.17:6443 --token tyh701.zk5atsbriqjtp7ji --discovery-token-ca-cert-hash sha256:69b775501c9439b807e64a99df1d075f175cd1d8a06c1a882d1da7badbf7a503 --control-plane --certificate-key 1bc6223367a3ba58645eff7d64ede4e5f49804eb4ba3dbe04aac0ea52f83702a
添加 worker 节点
Step 1)创建引导令牌并打印作为工作节点加入集群所需的完整 ‘kubeadm join’ 参数
$ kubeadm token create --print-join-command
kubeadm join 192.168.20.17:6443 --token 68ktls.euz56gf9y3et5138 --discovery-token-ca-cert-hash sha256:69b775501c9439b807e64a99df1d075f175cd1d8a06c1a882d1da7badbf7a503
Step 2)新节点上执行上面生成的 ‘kubeadm join’ 命令加入集群
$ kubeadm join 192.168.20.17:6443 --token 68ktls.euz56gf9y3et5138 --discovery-token-ca-cert-hash sha256:69b775501c9439b807e64a99df1d075f175cd1d8a06c1a882d1da7badbf7a503
K8S 集群删除节点
Step 1)驱逐该节点上面的 Pod
$ kubectl drain my-node --delete-local-data --force --ignore-daemonsets
Step 3)删除该节点
$ kubectl delete node my-node