容器相关
非root用户Docker与K8S
Containerd安装
Containerd常用命令
Docker
镜像创建
国内镜像仓库
容器创建(Dockerfile)
容器系统
docker配置
docker数据管理
docker网络管理
docker容器自启动
docker镜像加速
docker问题
搭建Portainer可视化界面
Docker Swarm
Swarm搭建Docker集群
Docker Compose
Docker Compose命令
Docker Compose模板
Docker Machine
Kubernetes常用命令
k8s部署(kubeadmin)
k8s高可用部署
MiniKube
k8s1.24部署(containerd)
k8s1.24部署(docker)
部署 Dashboard
Kuboard K8S管理台
k8s权限管理
k8s网络插件
私有仓密码镜像拉取
k8s集群管理
POD--基本单位
Pod模板
Pod生命周期
Pod健康检查
初始化容器(initContainer)
Deployment--Pod的管理
Deployment模板
Deployment升级与回滚
DaemonSet控制器
StatefulSet控制器(有状态)
JOB与CRONJOB
Service--发布服务
ingress-traefix
ingress-nginx
MetalLB
存储与配置
持久存储卷
配置存储卷
资源管理
标签、选择器与注解
资源预留
调度管理
自动扩容
Proxy API与API Server
Helm--K8S的包管理器
helm常用命令
自定义Chart
私有chart仓库
helm dashboard
K8S证书过期
K8S问题解决
Harbor安装
Harbor操作
Harbor问题
Harbor升级
Docker Registry安装
Docker Registry鉴权
Registry用Nginx代理SSL及鉴权
Docker Registry问题
Istio 服务网络
常用示例
Gateway【服务网关】
kiali 可视化页面
开启HTTPS
linkerd 服务网络
本文档使用MrDoc发布
返回首页
-
+
K8S证书过期
2022年2月18日 13:54
admin
#参考资料 #单master https://blog.csdn.net/jiangbenchu/article/details/109287837 #多master https://blog.csdn.net/weixin_45912745/article/details/128980030 https://blog.csdn.net/rendongxingzhe/article/details/124386924 --- #单MASTER #查看证书过期时间 ####注意:通过kubeadm init初始化的,证书默认有效期为1年 kubeadm alpha certs check-expiration ![](/media//202202/2022-02-18135320219706.png) ####或者直接查看文件 cd /etc/kubernetes/pki; for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A 3 'Validity' ; done ![](/media//202202/2022-02-18144743994044.png) --- #修改默认一年有效时间 >#MASTER节点 ##1、需要安装GO环境 http://baodoc.frp.bao-server.club:22080/project/43/531/ ##1.2、需要安装rsync yum -y install rsync --- ##2、下载K8S源码包 https://github.com/kubernetes/kubernetes/releases wget https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.16.14.tar.gz --- ##3、修改源码目录中的配置 ### kubeadm 1.14 版本之前 staging/src/k8s.io/client-go/util/cert/cert.go ### kubeadm 1.16 版本之前 cmd/kubeadm/app/util/pkiutil/pki_helpers.go ####内容: #默认一年 NotAfter: time.Now().Add(duration365d).UTC(), #修改为十年: NotAfter: time.Now().Add(duration365d * 10).UTC(), --- ### kubeadm 1.16 之后 cmd/kubeadm/app/constants/constants.go ####内容: #默认一年 CertificateValidity = time.Hour * 24 * 365 #修改为十年: CertificateValidity = time.Hour * 24 * 365 * 10 ###或者 cmd/kubeadm/app/util/pkiutil/pki_helpers.go ####内容: #默认一年 NotAfter: time.Now().Add(kubeadmconstants.CertificateValidity).UTC() #修改为十年: NotAfter: time.Now().Add(kubeadmconstants.CertificateValidity * 10).UTC() --- ##4、重新编译 make WHAT=cmd/kubeadm GOFLAGS=-v --- ##5、使用编译后的 kubeadm文件替换官方原 kubeadm #查找kubeadm位置 which kubeadm #替换 cp ./_output/local/bin/linux/amd64/kubeadm /usr/bin/kubeadm --- ##6、刷新证书 kubeadm alpha certs renew all --- ##7、延期配置之后需要更新配置文件 #### 注意:更新配置文件前先以 move 方式备份,或删除配置文件 mkdir -p /etc/kubernetes/confbak/ mv /etc/kubernetes/*.conf /etc/kubernetes/confbak/ --- ##8、更新配置文件 kubeadm init phase kubeconfig all --- ##9、重启 kube-apiserver,etcd,scheduler,controller 容器 docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | xargs docker restart --- ##10、重启kubelet systemctl restart kubelet --- ##11、将新生成的 admin 配置文件覆盖掉原本的 admin 文件 mv $HOME/.kube/config $HOME/.kube/config.old cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config --- >#WORK节点 ##1、先在node节点备份文件 cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf_bak --- ##2、在master节点上生成kubelet.conf 命令格式: kubeadm init phase kubeconfig kubelet --node-name <节点名称> --kubeconfig-dir /tmp/ --apiserver-advertise-address <集群VIP>, 例如: kubeadm init phase kubeconfig kubelet --node-name test1 --kubeconfig-dir /tmp/ --apiserver-advertise-address 192.168.180.45 --- ##3、拷贝到node节点上 scp /tmp/kubelet.conf root@192.168.180.46:/etc/kubernetes/ --- ##4、重启node节点的kubelet systemctl restart kubelet --- #过期延期 >#MASTER节点 ##1、刷新证书 kubeadm alpha certs renew all --- ##2、延期配置之后需要更新配置文件 #### 注意:更新配置文件前先以 move 方式备份,或删除配置文件 mkdir -p /etc/kubernetes/confbak/ mv /etc/kubernetes/*.conf /etc/kubernetes/confbak/ --- ##3、更新配置文件 kubeadm init phase kubeconfig all --- ##4、重启 kube-apiserver,etcd,scheduler,controller 容器 docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | xargs docker restart --- ##5、重启kubelet systemctl restart kubelet --- ##6、将新生成的 admin 配置文件覆盖掉原本的 admin 文件 mv $HOME/.kube/config $HOME/.kube/config.old cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config --- >#WORK节点 ##1、先在node节点备份文件 cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf_bak --- ##2、在master节点上生成kubelet.conf 命令格式: kubeadm init phase kubeconfig kubelet --node-name <节点名称> --kubeconfig-dir /tmp/ --apiserver-advertise-address <集群VIP>, 例如: kubeadm init phase kubeconfig kubelet --node-name test1 --kubeconfig-dir /tmp/ --apiserver-advertise-address 192.168.180.45 --- ##3、拷贝到node节点上 scp /tmp/kubelet.conf root@192.168.180.46:/etc/kubernetes/ --- ##4、重启node节点的kubelet systemctl restart kubelet --- #多MASTER ##注意:如果已经过期,修改服务器时间于限期内 date -s "2022-01-01" --- ##查看证书过期时间 ####注意:通过kubeadm init初始化的,证书默认有效期为1年 kubeadm alpha certs check-expiration ![](/media//202202/2022-02-18135320219706.png) ####或者直接查看文件 cd /etc/kubernetes/pki; for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A 3 'Validity' ; done ![](/media//202202/2022-02-18144743994044.png) --- ##备份(master01) #备份证书 cp -rp /etc/kubernetes /etc/kubernetes-$(date +%Y%m%d).bak #备份etcd目录 cp -r /var/lib/etcd /var/lib/etcd-$(date +%Y%m%d).bak #备份就的kubeadm cp /usr/bin/kubeadm /usr/bin/kubeadm-$(date +%Y%m%d).bak --- ##替换kubeadm ####注意:如果使用原来的kubeadm,只会延长一年有效期 cp -f /opt/cpaas_install_k8s/packages/k8s_package/k8s_certs/kubeadm /usr/bin/kubeadm --- ##生成集群配置文件(master01) ####注意:如已过期,可调整系统时间,或者使用之前初始化时候的yml文件 kubeadm config view > /root/kubeadm-cluster.yaml ##更新证书(master01) kubeadm alpha certs renew all --config=/root/kubeadm-cluster.yaml ##确认证书更新(master01) kubeadm alpha certs check-expiration ##重新生成配置文件(master01) cd /etc/kubernetes rm -f /etc/kubernetes/*conf kubeadm init phase kubeconfig all --config=/root/kubeadm-cluster.yaml --- ##复制新的配置文件(master01) rm -rf ~/.kube mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config ##更新其他master节点(master02、其它节点如此类推) ####复制配置文件及kubeadm(master01) scp /root/kubeadm-cluster.yaml root@<master02_ip>:/root/ scp /opt/cpaas_install_k8s/packages/k8s_package/k8s_certs/kubeadm root@<master02_ip>:/root/ ####更新证书(master02) #更新证书 cp -rp /etc/kubernetes /etc/kubernetes-$(date +%Y%m%d).bak cp -r /var/lib/etcd /var/lib/etcd-$(date +%Y%m%d).bak cp /usr/bin/kubeadm /usr/bin/kubeadm-$(date +%Y%m%d).bak cp -f /root/kubeadm /usr/bin/kubeadm kubeadm alpha certs renew all --config=/root/kubeadm-cluster.yaml kubeadm alpha certs check-expiration #更新配置文件 cd /etc/kubernetes rm -f /etc/kubernetes/*conf kubeadm init phase kubeconfig all --config=/root/kubeadm-cluster.yaml #复制新的配置文件 rm -rf ~/.kube mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config --- ##重启服务(所有master节点执行) ####注意:在所有master上执行,使证书生效 --- ####重启Etcd数据库 docker ps |grep -E 'k8s_etcd_etcd' | awk -F ' ' '{print $1}' |xargs docker restart ####重启kube-apiserver、kube-controller、kube-scheduler docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler' | awk -F ' ' '{print $1}' |xargs docker restart
分享到: