Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Kubelet 证书自动续期

Kubelet 证书自动续期

作者头像
YP小站
发布于 2020-06-04 02:48:29
发布于 2020-06-04 02:48:29
3.5K00
代码可运行
举报
文章被收录于专栏:YP小站YP小站
运行总次数:0
代码可运行

一、问题现象和原因

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 组件配置,具体添加下面参数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--feature-gates=RotateKubeletServerCertificate=true
--feature-gates=RotateKubeletClientCertificate=true
# 1.8版本以上包含1.8都支持证书更换自动重载,以下版本只能手动重启服务
--rotate-certificates
  • 修改 controller-manager 组件配置,具体添加下面参数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 证书有效期为10--experimental-cluster-signing-duration=87600h0m0s
--feature-gates=RotateKubeletServerCertificate=true

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

  • vim tls-instructs-csr.yaml && kubectl apply -f tls-instructs-csr.yaml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create clusterrolebinding node-client-auto-approve-csr --clusterrole=system:certificates.k8s.io:certificatesigningrequests:nodeclient --user=kubelet-bootstrap
  • 自动批准 system:nodes 组用户更新 kubelet 自身与 apiserver 通讯证书的 CSR 请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create clusterrolebinding node-client-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes
  • 自动批准 system:nodes 组用户更新 kubelet 10250 api 端口证书的 CSR 请求
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl create clusterrolebinding node-server-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeserver --group=system:nodes

重启kube-controller-manager 和 kubelet 服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 YP小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
kubernetes(十五) kubernetes 运维
1、服务器初始化 2、部署etcd集群,包括生成证书 3、部署master(kube-apiserver、scheduler、controller-manager) 4、部署node(kubelet、proxy、docker) 5、部署网络组件、dashboard、ingress controller、配置pv自动供给、CoreDNS等
alexhuiwang
2020/09/23
1.1K0
kubernetes(十五) kubernetes 运维
kubernetes关键概念总结
每个service对应一个cluster IP,cluster IP对应的服务网段最初是在配置kube-apiserver、kube-controller-manager和kube-proxy的systemd unit时指定的,如kube-apiserver参数为--service-cluster-ip-range。
charlieroro
2020/03/24
3990
Kubernetes TLS bootstrapping
众所周知 TLS 的作用就是对通讯加密,防止中间人窃听;同时如果证书不信任的话根本就无法与 apiserver建立连接,更不用提有没有权限向 apiserver 请求指定内容。在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式。
看、未来
2022/06/12
8520
Kubernetes TLS bootstrapping
二进制部署k8s教程16 - 部署kubelet[TLS引导方式]
(https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/bootstrap-tokens/)
janrs.com
2023/03/08
5470
015.Kubernetes二进制部署所有节点kubelet
kubelet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如 exec、run、logs 等。
木二
2019/11/20
1.1K0
015.Kubernetes二进制部署所有节点kubelet
第五篇(二进制部署k8s集群---node节点部署)
本文在以下主机上操作部署k8s node k8s-node1:192.168.206.41 k8s-node2:192.168.206.42 k8s-node3:192.168.206.43
@凌晨
2020/11/23
9950
Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
如果更改了k8s service的网段需要将coredns的serviceIP改成k8s service网段的第十个IP
郑子铭
2021/07/20
1.6K0
Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记
Kubernetes v1.18.2 二进制高可用部署
二进制包下载地址:https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz
YP小站
2020/06/04
1.7K0
Kubernetes v1.18.2 二进制高可用部署
Kubernetes(k8s)1.14 离线版集群 - 部署work节点
声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。
Mr.Vv
2020/06/11
8090
Kubernetes(k8s)1.14 离线版集群 - 部署work节点
K8S集群安装
主要参考 https://github.com/opsnull/follow-me-install-kubernetes-cluster
JadePeng
2018/12/12
4.2K0
Kubernetes TLS bootstrapping流程分析
细节参见官方文档:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/
shawwang
2020/07/06
2.1K0
二进制部署k8s教程07 - 部署kubectl
kubectl 作为 kube-apiserver 的客户端工具,需要访问 kube-apiserver 的服务,所以需要 kube-apiserver 的 ca
janrs.com
2023/03/08
3250
kubelet签署证书到期解决
排查 登陆dashboard发现node节点状态都为not ready,然后登陆node节点 看到确实都为not ready ,本能反应是把kubelet、kube-proxy服务都重新一遍,重新后状态任然为notready状态。 这时细看nodes节点状态age为368d,感觉应该是什么过期了,之前还特意申请证书为10年,应该不是证书的问题,后来查阅部署文档发现kubelet也需要证书授权。
三杯水Plus
2020/02/10
2.1K0
k8s1.13.0二进制部署-node节点(四)
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情,因此有了TLS Bootstrapping机制,kubelet会以一个低权限用户自动向apiserver申请证书,kubelet的证书由apiserver动态签署。 认证大致工作流程如图所示:
yuezhimi
2020/09/30
4590
k8s1.13.0二进制部署-node节点(四)
Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
必须配置native.cgroupdriver,不配置这个步骤会导致kubelet启动失败
鱼找水需要时间
2023/08/03
7320
Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
Kubernetes集群搭建之Master配置篇
本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复【K8s实战】获取
程序员同行者
2019/03/19
1K0
Kubernetes集群搭建之Master配置篇
Kubernetes集群证书过期解决办法
K8S集群证书过期后,会导无法创建Pod,通过kubectl get nodes也无法获取信息,甚至dashboard也无法访问。
jwangkun
2021/12/23
6.6K0
Kubernetes集群证书过期解决办法
29 Dec 2021 kubernetes静态token认证和kubeconfig认证
可以看到,用户能正常访问集群,并设置了正确的权限,下面例子创建kubeconfig访问集群。
俊采
2023/10/17
2110
03 . 二进制部署kubernetes1.18.4
简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 二进制包 从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。 二进制
iginkgo18
2020/09/27
5350
03 . 二进制部署kubernetes1.18.4
二进制搭建Kubernetes集群(最新v1.16.0版本)
下载地址:https://github.com/coreos/etcd/releases
仙人技术
2020/04/29
2K0
二进制搭建Kubernetes集群(最新v1.16.0版本)
相关推荐
kubernetes(十五) kubernetes 运维
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文