Kubernetes (k3s):集群上的过期证书

Posted

技术标签:

【中文标题】Kubernetes (k3s):集群上的过期证书【英文标题】:Kubernets (k3s): expired certs on cluster 【发布时间】:2021-03-02 03:50:34 【问题描述】:

我刚刚无法访问我的 k3s。

这周我检查了证书是否已自动更新……结果是这样的:

[root@vmpkube001 tls]# for crt in *.crt; do      printf '%s: %s\n'      "$(date --date="$(openssl x509 -enddate -noout -in "$crt"|cut -d= -f 2)" --iso-8601)"      "$crt"; done | sort
2021-09-18: client-admin.crt
2021-09-18: client-auth-proxy.crt
2021-09-18: client-cloud-controller.crt
2021-09-18: client-controller.crt
2021-09-18: client-k3s-controller.crt
2021-09-18: client-kube-apiserver.crt
2021-09-18: client-kube-proxy.crt
2021-09-18: client-scheduler.crt
2021-09-18: serving-kube-apiserver.crt
2029-11-03: client-ca.crt
2029-11-03: request-header-ca.crt
2029-11-03: server-ca.crt

但是 cli 坏了:

仪表板也是如此:

集群“年龄”大约是 380 天左右。 我在 centos7 集群中运行“v1.18.12+k3s1”。

我更改服务器上的日期以便能够再次执行 kubectl... 秘密是错误的...如何更新?

节点日志:

Nov 18 16:34:17 pmpnode001.agrotis.local k3s[6089]: time="2020-11-18T16:34:17.400604478-03:00" level=error msg="server https://127.0.0.1:33684/cacerts is not trusted: Get https://127.0.0.1:33684/cacerts: x509: certificate has expired or is not yet valid"

不仅如此,互联网上每个此类问题的案例都说明了有关 kubeadm alpha 证书的内容。没有 kubeadm,我在 kubeclt 中唯一的“alpha”功能是调试。

【问题讨论】:

【参考方案1】:

要忽略此错误,请按以下步骤操作:

第 1 步。停止 k3s

systemctl stop k3s.service 

第 2 步。停止时间同步

hwclock --debug
    
timedatectl set-ntp 0
  
systemctl stop ntp.service 
    
systemctl status systemd-timesyncd.service 

第 3 步。将日期更新为

date $(date "+%m%d%H%M%Y" --date="90 days ago")

第四步,重启 k3s

systemctl start k3s.service 

只需运行这个来测试集群!

kubectl get nodes

【讨论】:

【参考方案2】:

我搞定了。

事实证明,自动更新过程中存在一些错误。它已被修补,但他们忘记将其反向移植到 1.18 分支。 我必须将其更新到 1.19.4 才能正常工作。

【讨论】:

以上是关于Kubernetes (k3s):集群上的过期证书的主要内容,如果未能解决你的问题,请参考以下文章

云原生之kubernetes实战kubernetes集群的证书管理

Kubernetes集群实践-排错(01)Node节点证书过期

k3s 证书过期解决方法

k3s 证书过期修改

Kubeadm集群证书过期后的处理

Kubeadm集群证书过期后的处理