kubeadm拉起的k8s集群證書過期的做法集群已奔潰也可以解決

kubeadm拉起的k8s集群證書過期的做法

  • 這個是很久之前遇到的了,今天有空(心血來潮)就都回憶回憶寫在這里為愛發光,部分內容來自arch先生(死黨)的幫助。
    • 有時候有很多部門提了建k8s的需求,有些是臨時的,有些沒有說具體用多久,但是某天,他們和你說集群壞了,這時候你上去一看證書過期了,這里又有兩種情況我們分別說明:
      • 集群還活著
      • 集群已歸西
        • 1、備份數據
        • 2、報錯內容及分析
        • 3、生成證書
        • 4、證書內容合并
        • 5、證書替換
        • 6、證書生效

這個是很久之前遇到的了,今天有空(心血來潮)就都回憶回憶寫在這里為愛發光,部分內容來自arch先生(死黨)的幫助。

有時候有很多部門提了建k8s的需求,有些是臨時的,有些沒有說具體用多久,但是某天,他們和你說集群壞了,這時候你上去一看證書過期了,這里又有兩種情況我們分別說明:

集群還活著
集群已歸西(麻煩事兒)

集群還活著

#查看證書過期時間
kubeadm certs check-expiration#如果過期就更新
kubeadm certs renew all#更新完證書再次查看
kubeadm certs check-expiration#更新完證書后還需要重啟api-server,controller-manager,scheduler,etcd#看看有沒有這個文件
ll /etc/crictl.yaml#沒有就主動生成
echo "runtime-endpoint: unix:///run/containerd/containerd.sock" \|  tee /etc/crictl.yamlcontainerd執行腳本更新相關服務
pods="crictl pods --namespace kube-system --state READY"
for component in  kube-apiserver kube-controller-manager kube-scheduler etcd; doecho "> `date +%DT%T` Restart $component"$pods | grep "$component" | awk '{print "crictl stopp "$1 | "sh"}'sleep 5echo "---------------------------------------"
done

使用kubectl獲取集群資源看是否正常。

集群已歸西

此時集群無法連接、無法管理,甚至無法啟動

1、備份數據
mkdir ~/recoverysudo rsync -av /etc/kubernetes/ ~/recovery/etc-kubernetes/sudo rsync -av /var/lib/etcd/ ~/recovery/var-lib-etcd/sudo rsync -av /var/lib/kubelet/ ~/recovery/var-lib-kubelet/
2、報錯內容及分析
journalctl -u kubelet.service
kubelet[2447]: E0923 bootstrap.go:265]  part of the existing bootstrap client certificate in /etc/kubernetes/kubelet.conf is expired: xxxxxxxxx

顯而易見,kubelet 使用的證書過期了

查看 /etc/kubernetes/kubelet.conf 內容,看它使用的證書文件路徑

users:
- name: system:node:xxxxuser:client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pemclient-key: /var/lib/kubelet/pki/kubelet-client-current.pem

接著進入 /var/lib/kubelet/pki kubelet 的證書、私鑰都在這里,而且還有一個 kubelet.conf 引用的 pem 文件

.crt + .key = .pem

接著解析 kubelet.crt 內容

openssl x509 -in kubelet/pki/kubelet.crt -noout -textCertificate:Signature Algorithm: sha256WithRSAEncryptionIssuer: CN=kubernetesValidityNot Before: Jan  6 15:53:54 2022 GMTNot After : Jan  6 15:53:54 2023 GMTSubject: O=system:nodes, CN=system:node:vm-m1Subject Public Key Info:Public Key Algorithm: rsaEncryptionX509v3 extensions:X509v3 Subject Alternative Name:DNS:vm-m1主機名是 vm-m1,被 CN 和 DNS 用到Subject 格式 O=system:nodes, CN=system:node:${主機名}
DNS 格式 ${主機名}
3、生成證書

由于過期的是 kubelet 使用的證書,而 ca 沒過期,因此基于已有 ca 生成證書

node_name=vm-m1

#生成 EC 私鑰 (P-256 橢圓曲線)
openssl ecparam -genkey -name prime256v1 -noout -out kubelet.key#創建證書簽署請求 (CSR)
openssl req -new -key kubelet.key -out kubelet.csr -subj "/O=system:nodes/CN=system:node:${node_name}"#引用已有 ca,生成 crt 證書
openssl x509 -req -in kubelet.csr \-CA /etc/kubernetes/pki/ca.crt \-CAkey /etc/kubernetes/pki/ca.key \-CAcreateserial \-out kubelet.crt \-days 365 \-extensions v3_req \-extfile <(cat <<EOF
[ v3_req ]
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth
subjectAltName = @alt_names[ alt_names ]
DNS.1 = ${node_name}
EOF
)
4、證書內容合并

date_time= ( d a t e + c a t k u b e l e t . c r t > k u b e l e t ? c l i e n t ? (date +%F-%H-%M-%S) cat kubelet.crt > kubelet-client- (date+catkubelet.crt>kubelet?client?{date_time}.pem
cat kubelet.key >> kubelet-client-${date_time}.pem

5、證書替換
systemctl stop kubelet.servicecp -vf kubelet.crt kubelet.key /var/lib/kubelet/pki/cd /var/lib/kubelet/pki/ln -sf /var/lib/kubelet/pki/kubelet-client-${date_time}.pem kubelet-client-current.pem systemctl start kubelet.service
6、證書生效

當然這個場景下也得同步更新其他組件的證書

kubeadm certs renew all

接著刷新各個組件使用的證書,更建議直接 reboot 刷新

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70164.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70164.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70164.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Webpack 基礎入門

一、Webpack 是什么 Webpack 是一款現代 JavaScript 應用程序的靜態模塊打包工具。在 Web 開發中&#xff0c;我們的項目會包含各種類型的文件&#xff0c;如 JavaScript、CSS、圖片等。Webpack 可以將這些文件打包成一個或多個文件&#xff0c;以便在瀏覽器中高效加載。它就像…

torchsparse安裝過程的問題

1、項目要求torchsparse githttps://github.com/mit-han-lab/torchsparse.gitv1.4.0 2、torch1.8.1cu111 nvcc--version&#xff1a;11.1 這個版本的cuda匹配的gcc、g經常是7.5。設置為7.5. &#xff08;這個gcc、g版本修改不一定&#xff0c;可以先進行后面的&#xff0c…

嵌入式音視頻開發(二)ffmpeg音視頻同步

系列文章目錄 嵌入式音視頻開發&#xff08;零&#xff09;移植ffmpeg及推流測試 嵌入式音視頻開發&#xff08;一&#xff09;ffmpeg框架及內核解析 嵌入式音視頻開發&#xff08;二&#xff09;ffmpeg音視頻同步 嵌入式音視頻開發&#xff08;三&#xff09;直播協議及編碼器…

iOS App的啟動與優化

App的啟動流程 App啟動分為冷啟動和熱啟動 冷啟動&#xff1a;從0開始啟動App熱啟動&#xff1a;App已經在內存中&#xff0c;但是后臺還掛著&#xff0c;再次點擊圖標啟動App。 一般對App啟動的優化都是針對冷啟動。 App冷啟動可分為三個階段&#xff1a; dyld&#xff1a…

oppo,湯臣倍健,康冠科技25屆春招內推

oppo&#xff0c;湯臣倍健&#xff0c;康冠科技25屆春招內推 ①康冠科技25屆春招 【職位】算法、軟件、硬件、技術&#xff0c;結構設計&#xff0c;供應鏈&#xff0c;產品&#xff0c;職能&#xff0c;商務 【一鍵內推】https://sourl.cn/2Mm9Lk 【內推碼】EVBM88 ②湯臣倍健…

centos 9 時間同步服務

在 CentOS 9 中&#xff0c;默認的時間同步服務是 chrony&#xff0c;而不是傳統的 ntpd。 因此&#xff0c;建議使用 chrony 來配置和管理時間同步。 以下是使用 chrony 配置 NTP 服務的步驟&#xff1a; 1. 安裝 chrony 首先&#xff0c;確保系統已安裝 chrony。 在 CentOS…

解鎖 Python 導入系統:從基礎到進階的深度指南

本文全面解讀 Python 導入系統&#xff0c;從導入機制的基礎概念&#xff0c;如模塊、包的導入方式&#xff0c;到查找、加載模塊的詳細過程&#xff0c;再到導入系統的高級特性和應用場景&#xff0c;通過豐富示例、直觀圖表和對比分析&#xff0c;助你深入理解并熟練運用導入…

DDoS技術解析

這里是Themberfue 今天我們不聊別的&#xff0c;我們聊聊著名的網絡攻擊手段之一的 DDoS&#xff0c;看看其背后的技術細節。 DoS 了解 DDoS 前&#xff0c;先來講講 DoS 是什么&#xff0c;此 DoS 而不是 DOS 操作系統啊。1996年9月6日&#xff0c;世界第三古老的網絡服務提供…

docker安裝kafka,并通過springboot快速集成kafka

目錄 一、docker安裝和配置Kafka 1.拉取 Zookeeper 的 Docker 鏡像 2.運行 Zookeeper 容器 3.拉取 Kafka 的 Docker 鏡像 4.運行 Kafka 容器 5.下載 Kafdrop 6.運行 Kafdrop 7.如果docker pull wurstmeister/zookeeper或docker pull wurstmeister/kafka下載很慢&#x…

C++ 與 Java 的對比分析:除法運算中的錯誤處理

博客主頁&#xff1a; [小????????] 本文專欄: Java 文章目錄 &#x1f4af;前言&#x1f4af;C中的除法錯誤處理&#x1f4af;Java中的除法錯誤處理&#x1f4af;C與Java錯誤處理的對比&#x1f4af;錯誤處理的優化和實踐&#x1f4af;小結 &#x1f4af;前言 在…

LLM之循環神經網絡(RNN)

在人工智能的領域中&#xff0c;神經網絡是推動技術發展的核心力量。今天&#xff0c;讓我們深入探討循環神經網絡&#xff08;RNN&#xff09; 一、神經網絡基礎 &#xff08;1&#xff09;什么是神經網絡 神經網絡&#xff0c;又稱人工神經網絡&#xff0c;其設計靈感源于人…

SQL sever數據導入導出實驗

1.創建數據庫TCP-H &#xff08;1&#xff09;右鍵“數據庫”&#xff0c;點擊“新建數據庫”即可 &#xff08;2&#xff09;用sql語言創建&#xff0c;此處以創建數據庫DB_test為例&#xff0c;代碼如下&#xff1a; use master;go--檢查在當前服務器系統中的所有數據里面…

讓編程變成一種享受-明基RD320U顯示器

引言 作為一名有著多年JAVA開發經驗的從業者&#xff0c;在工作過程中&#xff0c;顯示器的重要性不言而喻。它不僅是我們與代碼交互的窗口&#xff0c;更是影響工作效率和體驗的關鍵因素。在多年的編程生涯中&#xff0c;我遇到過各種各樣的問題。比如&#xff0c;在進行代碼…

計算機網絡(涵蓋OSI,TCP/IP,交換機,路由器,局域網)

一、網絡通信基礎 &#xff08;一&#xff09;網絡通信的概念 網絡通信是指終端設備之間通過計算機網絡進行的信息傳遞與交流。它類似于現實生活中的物品傳遞過程&#xff1a;數據&#xff08;物品&#xff09;被封裝成報文&#xff08;包裹&#xff09;&#xff0c;通過網絡…

圖像處理篇---基本OpenMV圖像處理

文章目錄 前言1. 灰度化&#xff08;Grayscale&#xff09;2. 二值化&#xff08;Thresholding&#xff09;3. 掩膜&#xff08;Mask&#xff09;4. 腐蝕&#xff08;Erosion&#xff09;5. 膨脹&#xff08;Dilation&#xff09;6. 縮放&#xff08;Scaling&#xff09;7. 旋轉…

SpringMVC重定向接口,參數暴露在url中解決方案!RedirectAttributes

OK&#xff0c;首先描述下業務場景&#xff0c;終端數量限制登錄 1.首先訪問項目login的get接口 2.輸入賬號密碼點擊登錄后&#xff0c;會請求login的POST接口 3.后臺對終端數量邏輯處理不允許登錄跳回到登錄頁面 4.因代碼原因需在后臺進行多次重定向接口&#xff0c;最后跳…

Spring Boot01(注解、)---java八股

Spring Boot中常用注解及其底層實現 1、SpringBootApplication注解&#xff1a; SpringBootApplication注解&#xff1a;這個注解標識了一個SpringBoot工程&#xff0c;它實際上是另外三個注解的組合&#xff0c;這三個注解是&#xff1a; aSpringBootConfiguration&#xff1a…

?2.快速了解HTML5的標簽類型

??HTML5 的標簽類型豐富多樣&#xff0c;每種類型都有其獨特的功能和用途&#xff0c;以下是一些常見的 HTML5 標簽類型介紹&#xff1a; &#x1f98b;結構標簽 &#x1faad;<html>&#xff1a;它是 HTML 文檔的根標簽&#xff0c;所有其他標簽都包含在這個標簽內&am…

eNSP防火墻綜合實驗

一、實驗拓撲 二、ip和安全區域配置 1、防火墻ip和安全區域配置 新建兩個安全區域 ip配置 Client1 Client2 電信DNS 百度web-1 聯通DNS 百度web-2 R2 R1 三、DNS透明代理相關配置 1、導入運營商地址庫 2、新建鏈路接口 3、配置真實DNS服務器 4、創建虛擬DNS服務器 5、配置D…

Linux 配置交換空間(Swap)解決內存不足

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 倉庫主頁&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 歡迎點贊 &#x1f44d; 收藏 ?評論 …