专栏首页YP小站Kubelet 证书自动续期

Kubelet 证书自动续期

一、问题现象和原因

Kubernetes 日志错误

当 Kubernetes 集群日志中出现 certificate has expired or is not yet valid 错误信息时,表明证书过期

证书过期原因

  • 服务器时间不对,导致证书过期
  • 确实证书过期了

证书过期,很多同学会很疑惑,我证书明明签署10年有效期或者更久,怎么刚1年就过期了,下面就来解惑。

Kubernetes 集群证书

集群分为两种证书:一、用于集群 Master、Etcd等通信的证书。二、用于集群 Kubelet 组件证书

Kubernetes 集群中 Kubelet 组件坑

我们在搭建 Kubernetes 集群时,一般只声明用于集群 Master、Etcd等通信的证书 为 10年 或者 更久,但未声明集群 Kubelet 组件证书Kubelet 组件证书 默认有效期为1年。集群运行1年以后就会导致报 certificate has expired or is not yet valid 错误,导致集群 Node不能和集群 Master正常通信。

二、 解决方法

添加参数

  • 修改 kubelet 组件配置,具体添加下面参数
--feature-gates=RotateKubeletServerCertificate=true
--feature-gates=RotateKubeletClientCertificate=true
# 1.8版本以上包含1.8都支持证书更换自动重载,以下版本只能手动重启服务
--rotate-certificates
  • 修改 controller-manager 组件配置,具体添加下面参数
# 证书有效期为10年
--experimental-cluster-signing-duration=87600h0m0s
--feature-gates=RotateKubeletServerCertificate=true

创建自动批准相关 CSR 请求的 ClusterRole

  • vim tls-instructs-csr.yaml && kubectl apply -f tls-instructs-csr.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: system:certificates.k8s.io:certificatesigningrequests:selfnodeserver
rules:
- apiGroups: ["certificates.k8s.io"]
  resources: ["certificatesigningrequests/selfnodeserver"]
  verbs: ["create"]
  • 自动批准 kubelet-bootstrap 用户 TLS bootstrapping 首次申请证书的 CSR 请求
kubectl create clusterrolebinding node-client-auto-approve-csr --clusterrole=system:certificates.k8s.io:certificatesigningrequests:nodeclient --user=kubelet-bootstrap
  • 自动批准 system:nodes 组用户更新 kubelet 自身与 apiserver 通讯证书的 CSR 请求
kubectl create clusterrolebinding node-client-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes
  • 自动批准 system:nodes 组用户更新 kubelet 10250 api 端口证书的 CSR 请求
kubectl create clusterrolebinding node-server-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeserver --group=system:nodes

重启kube-controller-manager 和 kubelet 服务

$ systemctl restart kube-controller-manager

# 进入到ssl配置目录,删除 kubelet 证书
$ rm -f kubelet-client-current.pem kubelet-client-2019-05-10-09-57-21.pem kubelet.key kubelet.crt

# 重启启动,启动正常后会颁发有效期10年的ssl证书
$ systemctl restart kubelet


# 进入到ssl配置目录,查看证书有效期
$ openssl x509 -in kubelet-client-current.pem -noout -text | grep "Not"

Not Before: May 13 02:36:00 2019 GMT
Not After : May 10 02:36:00 2029 GMT

欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

本文分享自微信公众号 - YP小站(ypxiaozhan),作者:YP小站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Kubernetes v1.19.0 正式发布!

    终于,我们推出了Kubernetes 1.19,这是2020年的第二个发行版,并且迄今为止最长的发行周期持续了20周。它由33项增强功能组成。12个增强功能进入...

    YP小站
  • Kubernetes v1.17.0 正式发布

    欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

    YP小站
  • Kubernetes 无法查看 pods 日志问题

    最近使用二进制部署完 Kubernetes 1.18.2 版本,运行命令 kubectl logs -n kube-system calico-node-mbj...

    YP小站
  • 披着狼皮的羊:HP打印机远程代码执行漏洞(RCE)是这样被发现的

    ? 打印机作为组织机构内部不可缺少的资产设备,近年来,随着各种打印固件漏洞百出,其安全性也备受关注,打印机安全与电脑安全同等重要,不容忽视。我们注意到,惠普(...

    FB客服
  • 3月18日数据动态早报 | 人工智能时代

    数据动态早报,让您了解数据新变化,新创造和新价值。 ? ---- 一、通信行业数据动态 1 作为跨国电信巨头Telefonica在英国的子公司,O2于今年年...

    陆勤_数据人网
  • 云计算的10大好处

    云计算作为使用互联网上托管的远程服务器网络来存储、管理和处理数据的平台和场所,是企业发展的未来方向,它将改变企业的业务运作方式。

    静一
  • 学习zepto.js(对象方法)[1]

    学习zepto.js(对象方法)[1] zepto也是使用的链式操作,链式操作:函数返回调用函数的对象. 但并不是所有的对象方法都可以...

    贾顺名
  • 好米有好价! “牛刀”双拼域名易主终端

    中国是一个拼音的世界,拼音域名是指用汉字的拼音做域名的前缀,这样的好处是用户一看就明白这个域名的意思从而知道网站的内容,中文搜索引擎也对拼音域名很友...

    躲在树上的域小名
  • 社会工程学之邮件伪造

    邮箱伪造技术,可被用来做钓鱼攻击。 即伪造管理员或者IT运维部等邮箱发邮件,获取信任使对方打开附带的木马文件或者回复想要获取的敏感资料等。 而实现起来也很简单

    周俊辉
  • 社会工程学之邮件伪造

    邮箱伪造技术,可被用来做钓鱼攻击。 即伪造管理员或者IT运维部等邮箱发邮件,获取信任使对方打开附带的木马文件或者回复想要获取的敏感资料等。 而实现起来也很简单

    周俊辉

扫码关注云+社区

领取腾讯云代金券