最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s集群(kubeadm)CA證書過期的解決過程

 更新時(shí)間:2026年01月24日 10:40:20   作者:云計(jì)算-Security  
在K8s集群中,CA證書和Token都會(huì)過期,導(dǎo)致新節(jié)點(diǎn)無法加入集群,需要備份舊證書,重新生成新證書和配置文件,更新kubectl配置,重啟kubelet,重新加入工作節(jié)點(diǎn),驗(yàn)證集群節(jié)點(diǎn)狀態(tài)和健康狀況,確保K8s集群正常運(yùn)行

一、現(xiàn)象描述

之前有篇文章《K8s Token 過期解決方案(Kubeadm)》提到了默認(rèn)生成的 Token 有效期只有 24 小時(shí),過期后 Token 將不可用,如果想新的 Node 節(jié)點(diǎn)加入 K8s 集群,則需重新生成新的 Token。

今天無意間打開我虛擬機(jī)部署的 K8s 集群(通過 kubeadm 方式部署),發(fā)現(xiàn) CA 證書過期了(如下圖):

kubectl get pods

于是查看我的 K8s 集群證書,顯示證書都過期了(如下圖):

# 查看證書過期時(shí)間 => k8s1.15+版本的查看方法
kubeadm certs check-expiration

字段說明:

字段解釋
CERTIFICATE證書的名稱
EXPIRES證書過期的時(shí)間點(diǎn)
RESIDUAL TIME當(dāng)前時(shí)間距離證書過期的剩余時(shí)間
CERTIFICATE AUTHORITY證書的頒發(fā)機(jī)構(gòu)
EXTERNALLY MANAGED證書是否由外部系統(tǒng)管理

證書字段詳解:

CERTIFICATEEXPIRESRESIDUAL TIMECERTIFICATE AUTHORITYEXTERNALLY MANAGED備注
admin.confDec 12, 2023 03:36 UTCcanoKubeconfig 文件,包含集群訪問的配置
apiserverDec 12, 2023 03:36 UTCcanoKubernetes API 服務(wù)器的證書
apiserver-etcd-clientDec 12, 2023 03:36 UTCetcd-canoAPI 服務(wù)器與 ETCD 之間的客戶端證書
apiserver-kubelet-clientDec 12, 2023 03:36 UTCcanoAPI 服務(wù)器與 Kubelet 之間的客戶端證書
controller-manager.confDec 12, 2023 03:36 UTCcanoKubernetes 控制器管理器的 Kubeconfig 文件
etcd-healthcheck-clientDec 12, 2023 03:36 UTCetcd-cano用于 ETCD 健康檢查的客戶端證書
etcd-peerDec 12, 2023 03:36 UTCetcd-canoETCD 節(jié)點(diǎn)間的對(duì)等通信證書
etcd-serverDec 12, 2023 03:36 UTCetcd-canoETCD 服務(wù)器的證書
front-proxy-clientDec 12, 2023 03:36 UTCfront-proxy-cano前端代理的客戶端證書
scheduler.confDec 12, 2023 03:36 UTCcanoKubernetes 調(diào)度器的 Kubeconfig 文件

顯然,上表中的這些證書在 2023 年 12 月 12 日 03:36 UTC 就已經(jīng)過期,且剩余時(shí)間為<invalid>,表示這些證書已過期(無效),需要重新生成。

證書頒發(fā)機(jī)構(gòu)字段解釋:

CERTIFICATE AUTHORITYEXPIRESRESIDUAL TIMEEXTERNALLY MANAGED備注
caDec 09, 2032 03:36 UTC8年noKubernetes 的主證書頒發(fā)機(jī)構(gòu)
etcd-caDec 09, 2032 03:36 UTC8年noETCD 的證書頒發(fā)機(jī)構(gòu)
front-proxy-caDec 09, 2032 03:36 UTC8年no前端代理的證書頒發(fā)機(jī)構(gòu)

二、解決方案

1、對(duì)過期證書進(jìn)行備份,并刪除舊的證書

# 備份證書
cp -rp /etc/kubernetes /etc/kubernetes.bak

# 刪除舊的證書(使用新版本的新命令生成證書時(shí)可以忽略這一步,即可以不用刪除)
# rm -f /etc/kubernetes/pki/apiserver*
# rm -f /etc/kubernetes/pki/front-proxy-client.*
# rm -rf /etc/kubernetes/pki/etcd/healthcheck-client.*
# rm -rf /etc/kubernetes/pki/etcd/server.*
# rm -rf /etc/kubernetes/pki/etcd/peer.*

2、重新生成證書

# 新版本(1.15+) - - 使用該命令不用提前刪除過期證書
kubeadm certs renew all

# 老版本
# kubeadm alpha certs renew all

3、備份舊的配置文件,并重新生成新的配置文件

mv /etc/kubernetes/*.conf /tmp/

# 新版本(1.15+)
kubeadm init phase kubeconfig all

# 老版本
# kubeadm alpha phase kubeconfig all

4、更新 kubectl 配置

# 備份配置文件
cp -rp ~/.kube/config ~/.kube/config.bak

# 更新配置文件
\cp /etc/kubernetes/admin.conf ~/.kube/config

# 修改權(quán)限
chown $(id -u):$(id -g) $HOME/.kube/config

5、證書過期時(shí)間確認(rèn)

# 新版本(1.15+)查看方法
kubeadm certs check-expiration

# 單獨(dú)查看(其他同理)
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep 'Not'

# 老版本查看方法
# kubeadm alpha certs check-expiration

CA 證書時(shí)間已經(jīng)更新,

6、重啟 kubelet

所有 work 節(jié)點(diǎn)執(zhí)行,如果你的 master 節(jié)點(diǎn)也作為 work 節(jié)點(diǎn)使用,那 master 節(jié)點(diǎn)也需要執(zhí)行重啟 kubelet 的操作。

systemctl restart kubelet
systemctl status kubelet

7、查看集群節(jié)點(diǎn)狀態(tài)

發(fā)現(xiàn) work 節(jié)點(diǎn)不健康,這個(gè)時(shí)候我們需要重新將work 節(jié)點(diǎn)加入 k8s 集群

1)先查看集群中是否有 Token

kubeadm token list

2)沒有則重新生成 Token

# 生成默認(rèn) 24 小時(shí) Token(推薦)
kubeadm token create

# 生成永久有效 Token
# kubeadm token create --ttl 0

3)獲取 CA 證書 Hash 值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

4)最后就是 work 節(jié)點(diǎn)加入 K8s 集群

以 work1 節(jié)點(diǎn)為例,work2 節(jié)點(diǎn)及其他 work 節(jié)點(diǎn)同理。

# 填入上圖生成的 token、hash 值,并加入集群。
kubeadm join 192.168.56.160:6443 --token zlj5j5.3ezp1s8drj3jgept --discovery-token-ca-cert-hash sha256:3ed701329742f7549f73cb065a8677abe8b5b8a3e25bbca7bb26f317ffcf89d4

執(zhí)行后報(bào)錯(cuò):

報(bào)錯(cuò)原因:這些文件為舊文件(過期的文件),我們備份后清理即可

# 備份
cp -a /etc/kubernetes/kubelet.conf /tmp/kubelet.conf.back
cp -a /etc/kubernetes/pki/ca.crt /tmp/ca.crt.back

# 清理
rm -f /etc/kubernetes/kubelet.conf
rm -f /etc/kubernetes/pki/ca.crt

清理完成后,再次將 work 節(jié)點(diǎn)加入集群:

kubeadm join 192.168.56.160:6443 --token zlj5j5.3ezp1s8drj3jgept --discovery-token-ca-cert-hash sha256:3ed701329742f7549f73cb065a8677abe8b5b8a3e25bbca7bb26f317ffcf89d4

8、查看 k8s 集群節(jié)點(diǎn)健康狀態(tài)

kubectl get nodes

9、最后再驗(yàn)證以下證書過期時(shí)間

kubeadm certs check-expiration

無誤后,K8s 集群的 CA 證書更新完畢,此時(shí)打一個(gè)快照(因?yàn)槲沂翘摂M機(jī)),方便后續(xù)實(shí)驗(yàn)所用。

三、集群驗(yàn)證

K8s 集群證書過期時(shí)間更新完畢后,且集群節(jié)點(diǎn)也是健康的狀態(tài),那接下來我們跑一個(gè)測(cè)試服務(wù)驗(yàn)證一下集群是否可用。

kubectl create deployment nginx --image=nginx   # 創(chuàng)建單副本作為測(cè)試即可
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

瀏覽器訪問驗(yàn)證:http://192.168.56.160:31122/

再看看 pod 所在 work 節(jié)點(diǎn):調(diào)度也是沒問題的。

至此,K8s 集群驗(yàn)證完畢!

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • k8s通過命令批量刪除pod方式

    k8s通過命令批量刪除pod方式

    文章介紹了如何在k8s中批量刪除失敗的pod,首先,通過查看所有pod的狀態(tài),篩選出非Running的記錄,然后,針對(duì)特定命名空間(如kube-system)的記錄進(jìn)行篩選,并使用grep命令查找?guī)в蠩victed字段的pod,通過awk獲取pod名稱,并使用xargs循環(huán)刪除這些失敗的pod
    2026-01-01
  • Kubernetes安全加固的一些實(shí)用建議

    Kubernetes安全加固的一些實(shí)用建議

    Kubernetes是一個(gè)自動(dòng)化的容器編排平臺(tái),它負(fù)責(zé)應(yīng)用的部署、應(yīng)用的彈性以及應(yīng)用的管理,這些都是基于容器的,下面這篇文章主要給大家介紹了關(guān)于Kubernetes安全加固的一些實(shí)用建議,需要的朋友可以參考下
    2022-02-02
  • k8s創(chuàng)建啟動(dòng)、刪除pod的實(shí)現(xiàn)過程

    k8s創(chuàng)建啟動(dòng)、刪除pod的實(shí)現(xiàn)過程

    Kubernetes中Pod是管理容器的最小單元,包括創(chuàng)建、管理和刪除過程,Pod狀態(tài)包括Pending、Running、Succeeded、Failed和Unknown
    2026-01-01
  • k8s平臺(tái)本地?cái)?shù)據(jù)遷移整改過程

    k8s平臺(tái)本地?cái)?shù)據(jù)遷移整改過程

    文章主要介紹了對(duì)k8s平臺(tái)默認(rèn)數(shù)據(jù)存儲(chǔ)位置進(jìn)行優(yōu)化,將數(shù)據(jù)統(tǒng)一管理并存至指定目錄和云磁盤的整個(gè)過程,包括新磁盤的創(chuàng)建掛載、配置更改生效、環(huán)境檢查、清理舊環(huán)境等步驟,強(qiáng)調(diào)在集群所有節(jié)點(diǎn)上進(jìn)行優(yōu)化,并提醒配置更改生效后建議重啟機(jī)器以確保變更生效
    2026-05-05
  • K8S Pod定向部署到指定節(jié)點(diǎn)的實(shí)現(xiàn)全過程

    K8S Pod定向部署到指定節(jié)點(diǎn)的實(shí)現(xiàn)全過程

    K8S Pod定向部署通過節(jié)點(diǎn)標(biāo)簽、親和性和污點(diǎn)三種機(jī)制實(shí)現(xiàn)資源適配、業(yè)務(wù)隔離與節(jié)點(diǎn)專屬化,適用于不同場(chǎng)景,選型建議為標(biāo)簽用于基礎(chǔ)、親和性用于彈性、污點(diǎn)用于資源保護(hù)
    2025-08-08
  • K8S修改Pod時(shí)間方案詳細(xì)代碼實(shí)例

    K8S修改Pod時(shí)間方案詳細(xì)代碼實(shí)例

    在Kubernetes中,修改Pod的時(shí)間通常指的是修改Pod的時(shí)區(qū)設(shè)置,因?yàn)镻od的時(shí)間戳(如創(chuàng)建時(shí)間)是由Kubernetes集群管理的,并且通常不建議直接修改,這篇文章主要介紹了K8S修改Pod時(shí)間方案的相關(guān)資料,需要的朋友可以參考下
    2025-08-08
  • 在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案

    這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容詳解

    k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容詳解

    在實(shí)際生產(chǎn)系統(tǒng)中,經(jīng)常會(huì)遇到某個(gè)服務(wù)需要擴(kuò)容的場(chǎng)景,可能會(huì)遇到由于資源緊張或者工作負(fù)載降低而需要減少服務(wù)實(shí)例數(shù)量的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于k8s中如何實(shí)現(xiàn)pod自動(dòng)擴(kuò)縮容的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MinIO分布式文件存儲(chǔ)(從入門到飛翔)

    MinIO分布式文件存儲(chǔ)(從入門到飛翔)

    MinIO是一款高性能的分布式對(duì)象存儲(chǔ)系統(tǒng),兼容Amazon S3協(xié)議,具有輕量級(jí)、易部署、高可用和可擴(kuò)展性等優(yōu)勢(shì),它通過糾刪碼技術(shù)實(shí)現(xiàn)數(shù)據(jù)冗余與高容錯(cuò)性,適用于私有云存儲(chǔ)、大數(shù)據(jù)分析和靜態(tài)資源托管等場(chǎng)景,本文介紹MinIO分布式文件存儲(chǔ)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-03-03
  • 如何使用Kubernetes自定義資源(CRD)詳解

    如何使用Kubernetes自定義資源(CRD)詳解

    自定義資源定義(CRD)是Kubernetes API擴(kuò)展,可以定義新的對(duì)象類型,下面這篇文章主要給大家介紹了關(guān)于如何使用Kubernetes自定義資源(CRD)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

呼图壁县| 浦县| 江北区| 珲春市| 开江县| 福贡县| 海丰县| 遵义市| 金湖县| 安仁县| 涞源县| 张家川| 太和县| 射洪县| 金昌市| 静宁县| 页游| 陕西省| 商南县| 进贤县| 抚顺市| 昭觉县| 太湖县| 扎赉特旗| 琼结县| 定结县| 固安县| 太保市| 云龙县| 长白| 凤翔县| 游戏| 绵竹市| 巢湖市| 上思县| 陇川县| 堆龙德庆县| 石景山区| 凭祥市| 东乌珠穆沁旗| 凤庆县|