kubenetes集群 Master证书更新

k8s集群采用3master架构,上层haproxy+vip做负载均衡,以下脚本需人工参与(也可提前检查,无需人工参与),并且,需在每个master节点上都执行(或者自己用except做远程执行脚本,或借助ansible远程执行)。

cat kube-cert-update.sh

#!/bin/bash

# 获取今日时间
td_date=`date +%Y%m%d`
echo $td_date

# 查看证书状态
kubeadm alpha certs check-expiration
# 此处增加手动确认,比如给5秒时间,秒内输入Y,则继续脚本,否则退出脚本。
# //Todo

# 更新证书
kubeadm alpha  certs renew all

# 更新节点kubectl配置文件(这里为避免cp的alias(cp -i)的影响,使用/usr/bin/cp执行,否则还需要交互)
/usr/bin/cp /etc/kubernetes/admin.conf /root/.kube/config

# 备份apiserver、controller manager、schedule配置文件
/usr/bin/cp -r /etc/kubernetes/manifests/ /etc/kubernetes/manifests-backup-${td_date}

# 重启apiserver、controller manager、schedule
cd /etc/kubernetes/manifests
## 下面这一条命令即可执行删除pod
mv kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml ../

# 睡眠5秒,等待apiserver controller scheduler的pod全部删除
sleep 5s 

# 此处增加手动确认,确认pod已删除,比如给5秒时间,秒内输入Y,则继续脚本,否则退出脚本。
# //Todo

# 查看apiserver、controller manager、schedule pod,等待当前节点相关pod删除后,还原配置文件
## 还原配置文件到目录内,即可完成恢复pod
cp ../manifests-backup-${td_date}/kube*.yaml .

sleep 5s

# 当前节点apiserver、controller manager、schedule无异常后,操作下一节点。
kubectl get pods -n kube-system -o wide |grep kube-apiserver
kubectl get pods -n kube-system -o wide |grep kube-controller-manager
kubectl get pods -n kube-system -o wide |grep kube-scheduler

# 再次查看证书状态
kubeadm alpha certs check-expiration

脚本执行完,需人工查看证书状态及apiserver、controller manager、schedule无异常,确保更新无误。

你可能感兴趣的:(kubernetes,shell)