一、证书过期的问题与影响

版本:

k8s集群中各个组件(如api服务器、节点、控制器管理器等)之间使用证书进行身份验证和安全传输数据。然而,由于证书具有有效期,一旦过期,集群中的组件将无法正常通信,导致应用程序无法使用。

证书过期的影响

1、kubectl命令无法连接到集群,会出现上图的告警

2、集群中的Pod可能无法启动或运行异常,因为kubelet组件无法与API服务器进行通信

3、集群的监控和日志收集等功能可能受到影响,因为组件无法正常运行。

二、查看证书剩余时间

# kubeadm certs check-expiration   #此命令只使用kubeadm安装的环境

# kubeadm certs check-expiration

标题的含义:

CERTIFICATE: 具体的证书名称

 EXPIRES: 表示证书到期的日期和具体时间

RESIDUAL TIME: 这是证书剩余的有效期。

CERTIFICATE AUTHORITY: 签发证书的证书颁发机构(CA)的名称。

EXTERNALLY MANAGED:这表示正式是否由外部管理。no:表明kubeadm管理证书。yes:表明证书可能由其他工具或方法管理。

证书的作用:

admin.conf:用于管理员与kubernetes API服务器进行交互的身份验证。这个配置文件包含了访问API服务器所需的证书和秘钥。

apiserver:安全通信。api服务器使用此证书与其他集群组件(如:kubelet、控制器管理器等)进行TLS加密通信。身份验证:确保只有授权的客户端可以访问API服务器。

apiserver-etcd-client:API服务器用于etcd集群通信的客户端证书,确保API服务器与ETCD之间的通信是加密和安全的。

apiserver-kubelet-client:API服务用于kubelet通信的客户端证书,确保API服务器可以安全地与集群中的节点进行通信。

controller-manager.conf:控制器管理器用于与API服务器交互的身份验证证书,确保控制器管理器可以访问和操作集群资源。

etcd-healthcheck-client: 用于etcd健康检查的客户端证书,确保可以安全地检查etcd集群的健康状态。

etcd-peer:etcs集群中节点之间通信的证书,确保etcd集群内部的通信是加密和安全的。

etcd-server:etcd服务器用于与客户端通信的证书,确保etc服务器可以安全地与集群总的其他组件进行通信。

front-proxy-client:前端代理客户端证书,用于与API服务器进行身份验证,通长与某些代理或负载均衡器相关。

scheduler.conf:调度器用于与API服务器交互的身份验证证书,确保调度器可以访问和操作集群资源。

根证书:

ca: 根证书颁发激斗,用于签发和验证集群中其他所有证书的有效性。这是整个证书信任链的起点。

etcd-ca: etcd集群的根证书颁发机构,专门用于签发和验证etcd相关的证书。

front-proxy-ca:前端代理的根证书颁发机构,用于签发和验证与前端代理相关的证书。

三、备份重要数据。《过期之前》

需要备份的两个目录;

备份:

四、跟新证书

# kubeadm certs renew all

这个使用与证书已经过期,在过期之前可以使用kubectl delete pod 即可
## containerd

# crictl pods --namespace kube-system --name 'kube-scheduler-*|kube-controller-manager-*|kube-apiserver-*|etcd-*' -q | xargs crictl rmp -f


## docker 没有测试
docker ps |egrep "k8s_kube-apiserver|k8s_kube-scheduler|k8s_kube-controller|k8s_etcd"|awk '{print $1}'|xargs docker restart


##更新kubectl配置,也可指定
# cp /etc/kubernetes/admin.conf ~/.kube/config
# kubectl --kubeconfig=/etc/kubernetes/admin.conf get pod

五、参考:

使用kubeadm部署的集群证书过期后处理 | 杂烩饭

【云原生】Kubernetes----证书过期处理办法_kubernetes证书过期-CSDN博客

六、kubelet自动续签,没有测试

## 修改一
# vi /etc/kubernetes/manifests/kube-controller-manager.yaml
    - --cluster-signing-duration=43800h0m0s
    - --feature-gates=RotateKubeletServerCertificate=true


# kubectl apply -f /etc/kubernetes/manifests/kube-controller-manager.yaml


## 修改二。《默认不用修改,因地制宜》;所有节点都查看

# grep rotateCertificates /var/lib/kubelet/config.yaml 
rotateCertificates: true




# vi /etc/kubernetes/manifests/kube-controller-manager.yaml

# kubectl apply -f /etc/kubernetes/manifests/kube-controller-manager.yaml

# vi /var/lib/kubelet/config.yaml

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐