kubernetes證書過期問題的解決

背景:

之前在阿里云主機上使用kubeadm安裝的kubernates(版本號為:1.8.3),使用了一年以后琳骡,突然出現(xiàn)問題。
問題狀態(tài)為不管使用kubectl 的什么指令祈纯,都報出以下的異常:

Unable to connect to the server: x509: certificate has expired or is not yet valid

通過異常關鍵字查詢令宿,最后定位是默認安裝中,kubenates的apiserver與kubelet的訪問授信證書是一年腕窥,官方的說法是通過這種方式粒没,讓用戶不斷的升級版本。現(xiàn)在這套環(huán)境上跑著用戶的生產環(huán)境簇爆,不可能去做升級或是重裝的事情癞松,這個影響太大了,所以需要在不重裝kubernates的前提上入蛆,把這個問題解決掉响蓉。

思路

方案1

源碼去掉證書判定邏輯,重新編譯
這個方式沒有驗證哨毁,但需要下載對應版本的源碼枫甲,重新編譯相應組件。這個方式如果是與原作者的k8s版本一致可以試一下挑庶,或是對go語言熟悉的用戶可以找對應的處理邏輯代碼進行修改言秸。

方案2

重新生成證書
其中有位大胡子說:

topic1.png

備注:因為內容太多软能,這里沒有辦法截圖完整方案迎捺,可以通過鏈接自己查看。大概意思就是說他是1.8以下版本的k8s集群環(huán)境,按照以下步驟可以解決問題查排。并且有多人回復說按照大胡子的方式處理已經成功解決問題凳枝。
樓下出現(xiàn)一個小人說:
topic2.png

大概意思就是說他是非集群的環(huán)境,按照大胡子的1-6步損傷也成功了。

解決

有了上面的方案做參照岖瑰,就有了自己的思路叛买。基于本人的實際情況蹋订。還是考慮使用方案2的方式來解決率挣,只是根據自己的情況對步驟進行裁減,最后問題得到了解決露戒。下面將環(huán)境椒功,處理步驟以操作過程中出現(xiàn)的問題敘述如下:

環(huán)境

在阿里云的云主機上使用kubeadm安裝的1.8.3版本的單結點的kubernates。


topic3.png

處理步驟

備份證書

sudo mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old
sudo mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old
sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old
sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old
sudo mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old
sudo mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old

產生新的證書

sudo kubeadm alpha phase certs apiserver --apiserver-advertise-address 127.0.0.1
sudo kubeadm alpha phase certs apiserver-kubelet-client
sudo kubeadm alpha phase certs front-proxy-client

備份老的配置文件

sudo mv /etc/kubernetes/admin.conf /etc/kubernetes/admin.conf.old
sudo mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.old
sudo mv /etc/kubernetes/controller-manager.conf /etc/kubernetes/controller-manager.conf.old
sudo mv /etc/kubernetes/scheduler.conf /etc/kubernetes/scheduler.conf.old

產生新的配置文件

 sudo kubeadm alpha phase kubeconfig all --apiserver-advertise-address 127.0.0.1

確認kubectl正在查找正確的配置文件路徑

 mv $HOME/.kube/config $HOME/.kube/config.old
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config
 sudo chmod 777 $HOME/.kube/config
 export KUBECONFIG=$HOME/.kube/config

重啟kube-apiserver智什,kube-controller-manager, kube-scheduler

通過docker ps找到kube-apiserver动漾,kube-controller-manager, kube-scheduler容器,然后指令殺掉容器荠锭,讓他重新加載旱眯。
下面以kube-apiserver為例:

docker ps | grep ${keyword}
topic4.png
docker kill -s HUP ${容器ID}


topic5.png

備注:

在生成證書時會莫名的訪問google的網址,因為google已經被封了证九,所以會報超時删豺。第一次出現(xiàn)這個異常的時候都快絕望了。


topic6.png

這是因為在kubeadm命令升級master證書時愧怜,它也會默認從網上讀取一個stable.txt的文件吼鳞。解決這個問題的辦法,就是生成一個集群配置的yaml文件叫搁,然后赔桌,在運行命令時指定這個Yaml文件即可。

kubeadm config view > cluster.yaml

注:如果已經無法使用該指令生成cluster.yaml文件的情況下渴逻,應該可以隨便找個文件也是可以的疾党,應該是kubeadm需要一個salt來生成證書信息,這個salt就是這個文件信息惨奕。
我的cluster.yaml文件如下:

api:
  advertiseAddress: 172.19.197.5
  bindPort: 6443
authorizationModes:
- Node
- RBAC
certificatesDir: /etc/kubernetes/pki
cloudProvider: ""
etcd:
  caFile: ""
  certFile: ""
  dataDir: /var/lib/etcd
  endpoints: null
  image: ""
  keyFile: ""
imageRepository: gcr.io/google_containers
kubernetesVersion: v1.8.3
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
nodeName: kubernetes.localdomain
token: ""
tokenTTL: 24h0m0s
unifiedControlPlaneImage: ""

然后在上面的kubeadm alpha phase指令中雪位,都添加config參數(shù),指定生成證書的鹽值梨撞。如:

sudo kubeadm alpha phase certs apiserver --config /root/cluster.yaml
sudo kubeadm alpha phase certs apiserver-kubelet-client --config /root/cluster.yaml
sudo kubeadm alpha phase certs front-proxy-client --config /root/cluster.yaml

sudo kubeadm alpha phase kubeconfig all  --config /root/cluster.yaml
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末雹洗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卧波,更是在濱河造成了極大的恐慌时肿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件港粱,死亡現(xiàn)場離奇詭異螃成,居然都是意外死亡旦签,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門寸宏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宁炫,“玉大人,你說我怎么就攤上這事氮凝「岢玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵罩阵,是天一觀的道長朵纷。 經常有香客問我,道長永脓,這世上最難降的妖魔是什么袍辞? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮常摧,結果婚禮上搅吁,老公的妹妹穿的比我還像新娘。我一直安慰自己落午,他們只是感情好谎懦,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溃斋,像睡著了一般界拦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梗劫,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天享甸,我揣著相機與錄音,去河邊找鬼梳侨。 笑死蛉威,一個胖子當著我的面吹牛,可吹牛的內容都是我干的走哺。 我是一名探鬼主播蚯嫌,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丙躏!你這毒婦竟也來了择示?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晒旅,失蹤者是張志新(化名)和其女友劉穎栅盲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敢朱,經...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡剪菱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年摩瞎,在試婚紗的時候發(fā)現(xiàn)自己被綠了拴签。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孝常。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚓哩,靈堂內的尸體忽然破棺而出构灸,到底是詐尸還是另有隱情,我是刑警寧澤岸梨,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布喜颁,位于F島的核電站,受9級特大地震影響曹阔,放射性物質發(fā)生泄漏半开。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一赃份、第九天 我趴在偏房一處隱蔽的房頂上張望寂拆。 院中可真熱鬧,春花似錦抓韩、人聲如沸纠永。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尝江。三九已至,卻和暖如春英上,著一層夾襖步出監(jiān)牢的瞬間炭序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工苍日, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留少态,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓易遣,卻偏偏與公主長得像彼妻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豆茫,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容