• 在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题


    更新证书需要重启服务才能生效(证书已经过期和还未过期都要重启才能生效),重启会对业务产生影响,请申请时间窗口进行处理

    注意该工具只适用于k8s版本v1.18.5、请按照服务器架构选择对应的版本

    相关说明:

    证书到期后 kube-scheduler 和 kube-controoler-manager 会出现异常,原先已经运行的Pod还能工作,当Pod出现异常重启或是被删除后无法自动重建。证书更新后需要重启 master 的 静态 Pods。因为动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。 静态 Pods 是被本地 kubelet 而不是 API Server 管理, 所以 kubectl 不能用来删除或重启他们。

    证书更新需要在所有k8s节点操作,使用定制的 kubeadm 工具更新证书,请按照以下步骤执行:

    1.下载定制的 kubeadm 二进制文件,并上传到服务器,下载链接如下:

    2.master节点执行如下命令,查看 k8s 组件证书有效期,RESIDUAL TIME 为 “invalid” 则表示已过期,如果没过期也可以提前续约;

    kubeadm alpha certs check-expiration

    3.对证书和配置进行备份,所有节点需要操作;

    cp -a /etc/kubernetes /etc/kubernetes.bak

    master节点再备份config配置

    cp /root/.kube/config /root/.kube/config.bak

    4.使用定制的 kubeadm 进行续约操作,所有master节点需要操作;

    1. chmod u+x kubeadm-10y
    2. ./kubeadm-10y alpha certs renew all

    5.执行以下命令,所有master节点使用更新后的 admin.conf 替换 /root/.kube/config 文件,出现提示时,输入 y 后回车;

    1. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    2. y

    6.master节点执行以下命令,查看 k8s 组件证书更新情况,RESIDUAL TIME 为 <数字>y 则标识证书已更新,且有效期10年;

    kubeadm alpha certs check-expiration

    7.master节点使用 kubectl 命令,检查输出是否正常

    1. kubectl get pod -A
    2. kubectl get node

    8.所有master节点载入基础镜像防止部分节点缺少基础镜像

    docker load -i /usr/share/proton-cs/images.tar

    9.重启服务使得所有组件能使用新证书进行工作,master节点逐台运行以下命令,以降低重启的影响:

    1. docker restart `docker ps | grep -E 'kube-apiserver|kube-scheduler|kube-controller|etcd|apigateway' | grep kube-system | grep -v 'anyrobot\|calico' | awk '{print $1}' | xargs` &>/dev/null
    2. systemctl restart kubelet

    10. 服务启动后还需检查kubelet 轮换证书是否已经过期,如果已经过期,需要参照 KB-3125 进行处理,检查方法如下,每个k8s节点执行命令:

    openssl x509 -noout -in /var/lib/kubelet/pki/kubelet-client-current.pem -text| grep -i not

    Not Before 指证书有效开始时间,Not After 指证书有效截至时间,如果 Not After 小于当前时间,说明证书已经过期,且没有自动轮换,需要手动干预解决

    比如,当前时间是2024年1月16日,Not After 为 2023年5月6日,说明已经过期,需要参照 KB-3125 进行处理

  • 相关阅读:
    Git 系列:简介安装以及配置管理
    D-Wave公开演示大规模相干量子退火
    Golang第一章:入门
    华为政企服务器产品集
    HTM5网页设计作业成品 HTML+CSS校园安全公益网站制作
    Django基本知识
    你忘不了的ConcurrentHashMap
    【Proteus仿真】【51单片机】智能雨刷器设计
    WPF布局与控件分类
    JVM资料阅读笔记总结-1
  • 原文地址:https://blog.csdn.net/duansamve/article/details/137940764