1、token的管理指令
指 令 | 作 用 |
kubeadm token list | 查看token |
kubeadm token delete <token名称> | 删除token |
kubeadm token create | 创建临时token,有效期24小时 |
kubeadm token create --ttl=0 --print-join-command | 创建永久的token |
2、K8S节点管理
2.1、查看节点
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 2d8h v1.23.0
node01 Ready <none> 2d4h v1.23.0
node02 Ready <none> 20h v1.23.0
2.2、删除节点
1)驱逐即将删除node节点上的pod
如果需要从集群中移除 node02 这个 Node 节点,在 master上执行下面的命令,安全驱逐节点上面所有的 pod,该命令执行成功后 node节点开始释放所有 pod ,并且不接收新的 pod 进程
[root@master ~]# kubectl drain node02 --delete-emptydir-data --force --ignore-daemonsets
node/node02 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-c6cnz, kube-system/kube-proxy-wzvm4
node/node02 drained
参数说明:
--force:当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候就需要用 --force 来强制执行 (例如:kube-proxy)
--ignore-daemonsets:无视 DaemonSet 管理下的 Pod
--delete-local-data:如果有 mount local volumn 的 pod,会强制杀掉该 pod 并把料清除掉,另外如果跟本身的配置信息有冲突时,drain就不会执行该命令会安全驱逐节点上面所有的 pod ,安全驱逐的方式将会允许 pod 里面的容器遵循指定的 Pod DisruptionBudgets 执行优雅的中止。
2) 恢复node,继续接收新pod
节点上的pod被驱逐后,如果不删除node的话,进行完对应的升级或维护后可以恢复node,恢复接收新的pod进程
[root@master ~]# kubectl uncordon node02
3)删除节点
[root@master ~]# kubectl delete node node02
node "node02" deleted
4)查看节点
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 2d9h v1.23.0
node01 Ready <none> 2d5h v1.23.0
2.3、节点加入单主集群
加入方式一:
1)创建新的token
[root@master ~]# kubeadm token create
W0606 20:32:28.134374 51026 common.go:167] WARNING: could not obtain a bind address for the API Server: no default routes found in "/proc/net/route" or "/proc/net/ipv6_route"; using: 0
.0.0.0376gn4.9fffhgwg6yual7tj # 新创建的token
2)获取ca的hash值
token 生成完后,我们还需要获取 ca 证书 sha256 编码 hash 值,查看当前 k8s 集群的 ca 证书 sha256 编码 hash 值,我们的 ca 证书默认存放在 /etc/kubernetes/pki 目录下。
[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex
(stdin)= 2b25ee800dd3a816b98b5f96e3f87c43add0cdc55a1d3037e7e4f43ecec1f902
3)将node02节点加入K8S集群
[root@node02 ~]# kubeadm reset --force
[root@node02 ~]# rm -rf /etc/cni/net.d/
[root@node02 ~]# kubeadm join 192.168.4.10:6443 --token 376gn4.9fffhgwg6yual7tj --discovery-token-ca-cert-hash sha256:2b25ee800dd3a816b98b5f96e3f87c43add0cdc55a1d3037e7e4f43ecec1f902
[root@master ~]# kubectl get nodes # master上查看node节点
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 2d9h v1.23.0
node01 Ready <none> 2d5h v1.23.0
node02 Ready <none> 49s v1.23.0
加入方式二:
1)在master节点上使用命令,直接生成出包含新的token与hash值的完整加入命令
[root@master ~]# kubeadm token create --print-join-command
kubeadm join 192.168.4.10:6443 --token 2d9vv9.whf5a1hj1g80f0z0 --discovery-token-ca-cert-hash sha256:6e6218060fabe62fa57b118b59b61ba84fe0deb359107286f416d6681b4411b9
2.4、 节点加入高可用集群
高可用集群与单master集群不同的地方在于还要生成用于新master加入的证书
1)首先生成新的 token
[root@master ~]# kubeadm token create --print-join-command
kubeadm join 192.168.4.10:6443 --token 2d9vv9.whf5a1hj1g80f0z0 --discovery-token-ca-cert-hash sha256:6e6218060fabe62fa57b118b59b61ba84fe0deb359107286f416d6681b4411b9
2)生成新的用于 master 加入的证书
[root@master ~]# kubeadm init phase upload-certs --upload-certs
I0902 10:32:26.020896 41297 version.go:255] remote version is much newer: v1.25.0; falling back to: stable-1.23
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
1224f68070347f1e8093021b07eb2c11917d9d5151688e35c79745dbc30ef719 # master加入的证书信息
3)通过新生成的 token、ca 证书 sha256 编码 hash 值、 master 证书的值,组成master 加入集群命令:
kubeadm join 192.168.4.10:6443 --token 2d9vv9.whf5a1hj1g80f0z0 --discovery-token-ca-cert-hash sha256:6e6218060fabe62fa57b118b59b61ba84fe0deb359107286f416d6681b4411b9 --control-plane --certificate-key 1224f68070347f1e8093021b07eb2c11917d9d5151688e35c79745dbc30ef719