Kubernetes集群运维录
前言
常在Kubernetes上走,难免会有些需求要录。将常用的运维操作收录一二,以备用时之需求。
笔记1: 控制平面更换操作系统
有时候需要针对Master节点操作系统更换,比如CentOS7版本EOL久矣,我们需要逐渐将操作系统更换为其它,RockyLinux、AlmaLinux、OpenEuler、Kylin等。亦或是该Master节点操作系统有故障需重装。
- 删除Etcd成员
// 查看当前ETCD集群的成员与节点ID
ETCDCTL_API=3 etcdctl \
--endpoints 127.0.0.1:2379 \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt \
--key /etc/kubernetes/pki/etcd/server.key \
member list
// 正式删除节点成员
ETCDCTL_API=3 etcdctl \
--endpoints 127.0.0.1:2379 \
--cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt \
--key /etc/kubernetes/pki/etcd/server.key \
member remove ID2. 从K8S集群中删除该节点
$ kubectl delete node XXX3. 生成加入Token
$ kubeadm init phase upload-certs --upload-certs
$ kubeadm token create --print-join-command --certificate-key 上一步生成的值4. 重装加入到K8S
按步骤3生成的命令,在节点中执行即可笔记2: ETCD持久化目录
由于不同的客户环境有不同的内部标准,比如数据分区的挂载目录位置,默认为/data,/opt,甚至还有各种目录。在初始化K8S集群时并没有留意这些,而是在完成之后才发现。举例将etcd 的持久化目录改到数据分区上面。
- 停止kubectl、containerd服务
# systemctl stop kubelet containerd2. 移动etcd目录到其它目录,并创建软链接,比如/opt
# mv /data/etcd /opt/etcd
# ln -svf /opt/etcd /data/etcd
3. 启动kubectl、containerd服务
# systemctl start kubelet containerd提示:如果不做软链接时,需要将etcd中的manifest YAML定义的hostPath 更新(单master上面正常通过,但如果是集群遇到过etcd无法起来的问题)
笔记3: Worker节点证书轮转
K8S集群的服务服务逾期了许久,虽然重新生成了,但worker节点一直NotReady。
控制平面生成对应节点的kubelet.conf文件
[root@vqiu-master-01 tmp]# install -d /tmp/kubelet
# 生成节点所需的 kubelet.conf文件。
[root@master kubelet]# kubeadm init --kubernetes-version=v1.26.15 phase kubeconfig kubelet --node-name vqiu-worker-01 --kubeconfig-dir /tmp/kubelet/
[kubeconfig] Writing “kubelet.conf” kubeconfig file
将生成的kubelet.conf文件传输到对应的worker节点中,操作如下:
[root@vqiu-worker-01 ~]# mv kubelet.conf /etc/kubernetes/kubelet.conf
[root@vqiu-worker-01 ~]# systemctl restart kubelet此时worker节点会生成新的证书
# ls -l /var/lib/kubelet/pki/kubelet证书的逾期时间
[root@vqiu-worker-01 ~]# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep Not
#切换到master(192.168.0.190)上,查看CSR。(未操作)
控制平面中查看证书签名请求
[root@vqiu-master-01 tmp]# kubectl get csr笔记4: 集群Token管理
生成一个永久Token
# kubeadm token create --ttl=0 --print-join-command生成一个加入控制平面的Token
# CERT_KEY=$(kubeadm init phase upload-certs --upload-certs | tail -n 1)
# kubeadm token create --ttl=1h --certificate-key=${CERT_KEY} --print-join-command