kube-controller未自动续期,导致kubelet-client-current.pem证书过期问题修复

使用 kubeadm 更新所有证书

您可以使用以下命令来更新集群中的所有证书,包括 kubelet 证书:

sudo kubeadm certs renew all --v=5

或者,对于较旧版本的 kubeadm,可以使用:

sudo kubeadm alpha certs renew all --v=5

手动更新 kubelet 证书

如果您只需要更新 kubelet 证书,可以手动进行操作。以下是详细步骤:

1. 删除旧证书

首先,删除旧的 kubelet 证书(线上环境需要备份,移除流量):

sudo rm /var/lib/kubelet/pki/kubelet-client-current.pem
sudo rm /var/lib/kubelet/pki/kubelet-client-*.pem
2. 生成新的私钥和 CSR

生成新的私钥和证书签名请求 (CSR):

openssl genrsa -out /var/lib/kubelet/pki/kubelet-client.key 2048
openssl req -new -key /var/lib/kubelet/pki/kubelet-client.key -out /var/lib/kubelet/pki/kubelet-client.csr -subj "/CN=system:node:<node-name>/O=system:nodes"
3. 使用 Kubernetes CA 签署新的证书

使用 Kubernetes 的 CA 签署新的证书:

openssl x509 -req -in /var/lib/kubelet/pki/kubelet-client.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out /var/lib/kubelet/pki/kubelet-client-current.pem -days 36500
4. 重新启动 kubelet

重新启动 kubelet 服务以使其使用新的证书:

sudo systemctl restart kubelet

使用 Kubernetes API 服务器的证书签发功能

如果您有权限访问 Kubernetes API 服务器,可以通过 API 服务器的证书签发功能来生成新的 kubelet 证书。

1. 生成新的私钥和 CSR

生成新的私钥和证书签名请求 (CSR):

openssl genrsa -out /var/lib/kubelet/pki/kubelet-client.key 2048
openssl req -new -key /var/lib/kubelet/pki/kubelet-client.key -out /var/lib/kubelet/pki/kubelet-client.csr -subj "/CN=system:node:<node-name>/O=system:nodes"
2. 创建一个 Kubernetes CSR 对象

创建一个 Kubernetes CSR 对象,并提交:

apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: <node-name>-csr
spec:
  groups:
  - system:authenticated
  request: $(cat /var/lib/kubelet/pki/kubelet-client.csr | base64 | tr -d '\n')
  usages:
  - digital signature
  - key encipherment
  - client auth

保存为 <csr-file>.yaml,然后应用:

kubectl apply -f <csr-file>.yaml
kubectl certificate approve <node-name>-csr
3. 获取签发的证书并保存

获取签发的证书并保存:

kubectl get csr <node-name>-csr -o jsonpath='{.status.certificate}' | base64 --decode > /var/lib/kubelet/pki/kubelet-client-current.pem
4. 重新启动 kubelet

重新启动 kubelet 服务:

sudo systemctl restart kubelet
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 架构中,kube-apiserver、kube-controller-manager、scheduler 和 kubelet 是四个核心组件,它们之间相互协作,从而实现 Kubernetes 的集群管理功能。 1. kube-apiserver:作为 Kubernetes 集群的接口,处理所有 REST API 请求。kube-apiserver 接收到用户提交的配置信息,然后将其存储到 etcd 中。 2. kube-controller-manager:控制器管理器是 Kubernetes 集群的核心组件,它包含了多个控制器,用于管理集群中的各种资源,如 Pod、Service、ReplicationController 等。每个控制器负责监控一个或多个资源,并确保它们处于预期状态。 3. scheduler:调度器根据资源的需求和可用性,将 Pod 分配到合适的节点上。当 kube-apiserver 接收到一个新的 Pod 创建请求时,它会将该请求发送到调度器进行处理。 4. kubeletkubelet 运行在每个节点上,负责管理该节点上的所有容器。kubelet 监控 etcd 中的 Pod 配置信息,并负责在节点上创建、启动和停止容器。 这四个组件之间的交互过程如下: 1. 用户提交配置信息到 kube-apiserver。 2. kube-apiserver 将配置信息存储到 etcd 中。 3. kube-controller-manager 监控 etcd 中的资源状态,并根据需要更新该状态。 4. scheduler 监听 kube-apiserver 上的新 Pod 创建请求,并为其分配一个节点。 5. kubelet 监听 etcd 中的 Pod 配置信息,并负责在节点上创建、启动和停止容器。 这样,Kubernetes 就可以实现高可用、弹性伸缩、自动装箱等特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值