AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1065444
Accepted
Antoine
Antoine
Asked: 2021-06-03 06:02:35 +0800 CST2021-06-03 06:02:35 +0800 CST 2021-06-03 06:02:35 +0800 CST

如何找到哪个 kubernetes 证书已过期?

  • 772

我有一个kubeadm安装的 Kubernetes 集群。最近它停止工作了。kubelet正在运行,但似乎停留在初始化阶段。我认为根本原因是这种重复登录kube-apiserver:

1 authentication.go:63] "Unable to authenticate the request" err="[x509: certificate has expired or is not yet valid: current time 2021-06-02T13:18:50Z is after 2021-05-29T15:48:22Z

所以有一个证书问题,也kubectl失败了unauthorized。事情是,kubeadm certs check-expiration似乎很高兴,我什至手动检查了一些 yaml 配置文件(base64 解码证书,并通过 openssl 运行它们以检查日期)。尽管如此,我还是要求 kubeadm 更新所有证书并重新启动所有内容,但没有任何效果。

知道如何确定哪个证书已过期吗?

ssl-certificate kubernetes kubeadm
  • 3 3 个回答
  • 8466 Views

3 个回答

  • Voted
  1. Best Answer
    Antoine
    2021-06-04T11:41:18+08:002021-06-04T11:41:18+08:00

    [致谢和参考] 一位 kubernetes 的开发人员在这里帮助了我

    过期的证书是/var/lib/kubelet/pki/kubelet/pki/kubelet-client-2020-*.pem. 里面的证书/var/lib/kublet/pki/不是自己处理的,kubeadm cert而是kubelet自己处理的,所以它应该是自动更新的,但由于某种原因,这并没有按我们的计划发生。已kubelet-client-current.pem更新,但某些东西仍在使用旧的(和过期的)证书。

    这是我解决问题的方法:

    • /etc/kubernetes/kubelet.conf已过时,尤其是使用default-user而不是system:node:node_name. 我删除了该文件,创建了一个 kubeadm conf 文件并运行kubeadm init phase kubeconfig kubelet以重新创建一个干净的kubelet.conf
    • /var/lib/kublet/pki/kubelet-client-current.pem应该是一个符号链接,对我来说不是这样。所以我删除了它。
    • 重启 kubelet 和 apiserver(使用 containerd、docker 等杀死 pod,因为 kubectl 不可用)并等待新kubelet-client-current.pem的创建;它应该是一个符号链接。
    • 跑kubeadm init phase kubelet-finalize all
    • 再次重启 kubelet
    • 跑kubeadm certs renew all
    • 重启(或重启 kubelet 和所有控制平面 pod)
    • 更新你的 kubectl conf/etc/kubernetes/admin.conf
    • 3
  2. p10l
    2021-06-04T02:43:53+08:002021-06-04T02:43:53+08:00

    类似的问题似乎与 NTP 去同步有关。
    尝试强制时间同步(以 root 身份运行):

    # service ntp stop
    # ntpd -gq
    # service ntp start
    
    • 0
  3. Abhishek
    2021-08-06T02:13:23+08:002021-08-06T02:13:23+08:00

    更新 Kubernetes 证书(在所有主节点上运行)

    #kubeadm alpha certs check-expiration
    #kubeadm init phase kubelet-finalize all
    #kubeadm alpha certs renew all
    #cd /etc/kubernetes
    #kubeadm alpha kubeconfig user --org system:nodes --client-name system:node:$(hostname) > kubelet.conf
    #mkdir -p $HOME/.kube
    #cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    #chown $(id -u):$(id -g) $HOME/.kube/config
    #restart server
    #kubectl get nodes
    
    • 0

相关问题

  • RHEL/Apache ssl.conf 配置问题

  • IIS7 中的证书信任列表

  • SSL证书的区别?

  • 如何修复邮件服务器 SSL?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve