k8s证书过期带来的问题解决

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 解决k8s自带签名证书过期后,节点状态为NotReady的恢复。

现象:

首先是master节点,执行kubectl get nodes 报错,在对master节点恢复后,恢复方法如下:

sudo kubeadm certs renew all --config=./kubeadm-init-config.yaml

后,发现worker节点依然是not ready状态:

kiosk@k8s-master:~$ k get nodes
NAME          STATUS     ROLES           AGE    VERSION
k8s-master    Ready      control-plane   425d   v1.24.1
k8s-worker1   NotReady   <none>          425d   v1.24.1
k8s-worker2   NotReady   <none>          425d   v1.24.1

同时在worker节点上查看kubelet状态,不是active状态,经过试验,发现调整了worker节点的时间,前置2个月,kubelet状态就正常了。
判定是worker节点没有更新证书。

在worker节点上执行:

kubeadm certs renew all

并不能解决问题。

但问题已经聚焦,在是证书过期问题没有解决。

于是考虑在master节点上,生成worker节点的kubelet.conf文件,复制过去。具体操作如下:

root@k8s-master:/home/kiosk# kubeadm init phase kubeconfig kubelet --node-name k8s-worker1 --config ./kubeadm-config.yaml --kubeconfig-dir /home/kiosk/tmp    
[kubeconfig] Writing "kubelet.conf" kubeconfig file

解释一下:

  • --node-name k8s-worker1是指定worker节点,
  • --config ./kubeadm-config.yaml,这个需要到集群创建时,使用的kubeadm-config.yaml文件所在位置
  • --kubeconfig-dir /home/kiosk/tmp 意思是生成一个配置文件到tmp目录下,并不是初始化集群

接着拷贝到worker1节点:

root@k8s-master:/home/kiosk/tmp# scp ./kubelet.conf 192.168.147.129:/etc/kubernetes/

在worker1节点上查看:

root@k8s-worker1:/etc/kubernetes# systemctl restart kubelet
//重启下服务
root@k8s-worker1:/etc/kubernetes# ls /var/lib/kubelet/pki/
kubelet-client-2022-08-16-12-45-49.pem  kubelet-client-2023-10-15-16-13-31.pem  kubelet-client-current.pem  kubelet.crt  kubelet.key
root@k8s-worker1:/etc/kubernetes# ll  /var/lib/kubelet/pki/  
total 24
drwxr-xr-x 2 root root 4096 Oct 15 16:13 ./
drwxr-xr-x 8 root root 4096 Aug 16  2022 ../
-rw------- 1 root root 1118 Aug 16  2022 kubelet-client-2022-08-16-12-45-49.pem
-rw------- 1 root root 1114 Oct 15 16:13 kubelet-client-2023-10-15-16-13-31.pem
lrwxrwxrwx 1 root root   59 Oct 15 16:13 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2023-10-15-16-13-31.pem
## 链接到新pem文件了
-rw-r--r-- 1 root root 2271 Aug 16  2022 kubelet.crt
-rw------- 1 root root 1679 Aug 16  2022 kubelet.key
## 查看证书
root@k8s-worker1:/etc/kubernetes# openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text  |grep Not
            Not Before: Oct 15 16:08:31 2023 GMT
            Not After : Oct 14 16:08:31 2024 GMT

再次查看kubelet服务:

root@k8s-worker1:/etc/kubernetes# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: active (running) since Sun 2023-10-15 16:13:56 UTC; 14min ago
       Docs: https://kubernetes.io/docs/home/
   Main PID: 6413 (kubelet)
      Tasks: 15 (limit: 4534)
     Memory: 37.7M
        CPU: 26.264s

在master节点上查看:

root@k8s-master:/home/kiosk/tmp# k get nodes
NAME          STATUS     ROLES           AGE    VERSION
k8s-master    Ready      control-plane   425d   v1.24.1
k8s-worker1   Ready      <none>          425d   v1.24.1
k8s-worker2   NotReady   <none>          425d   v1.24.1

同理,操作worker2节点。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
10月前
|
Kubernetes 容器 Perl
kubeadm初始化k8s集群延长证书过期时间
kubeadm初始化k8s集群延长证书过期时间
|
3月前
|
Prometheus 监控 Kubernetes
监控 Kubernetes 集群证书过期时间的三种方案
监控 Kubernetes 集群证书过期时间的三种方案
|
3月前
|
Kubernetes Linux 调度
K8S证书过期解决办法之替换证书
K8S证书过期解决办法之替换证书
716 0
|
Kubernetes 测试技术 API
Kubernetes 证书过期怎么玩
Kubernetes 证书过期怎么玩
318 1
|
1天前
|
Kubernetes 网络安全 Docker
在k8S中,Worker节点加入集群的过程是什么?
在k8S中,Worker节点加入集群的过程是什么?
|
1天前
|
Kubernetes 安全 数据安全/隐私保护
在k8S中,如何保证集群的安全性?
在k8S中,如何保证集群的安全性?
|
1天前
|
存储 Kubernetes 监控
在K8S中,worke节点如何加入K8S高可用集群?
在K8S中,worke节点如何加入K8S高可用集群?
|
1天前
|
Kubernetes 网络协议 应用服务中间件
在K8S中,SVC资源是否支持在K8S集群外部访问?
在K8S中,SVC资源是否支持在K8S集群外部访问?
|
1天前
|
SQL Kubernetes 数据处理
实时计算 Flink版产品使用问题之如何把集群通过kubernetes进行部署
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
canal Kubernetes Docker
基于Kubernetes v1.25.0和Docker部署高可用集群(03部分)
基于Kubernetes v1.25.0和Docker部署高可用集群(03部分)

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多