k8s1.18.1用kubeadm安裝證書續(xù)期

查看k8s中所有證書的到期時(shí)間:
kubeadm alpha certs check-expiration


image.png

查看CA證書過期時(shí)間:
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text |grep Not


image.png

查看集群證書過期時(shí)間:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '


image.png

如果集群證書還沒有過期
獲取一個(gè)創(chuàng)建好的 k8s集群的初始化配置文件
kubeadm config view > kubeadm.yaml


image.png

如果證書已經(jīng)過期了:

vim kubeadm.yaml
sion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.15.0  # kubernetes 版本
apiServer:
    certSANs:
    - 192.168.10.xxx # master 所有節(jié)點(diǎn)IP地址退子,包括master和slave
    - 192.168.10.xxx # slave1
    - 192.168.10.xxx # slave2
    extraArgs:
        service-node-port-range: 80-32767
        advertise-address: 0.0.0.0
controlPlaneEndpoint: "192.168.10.xxx:6443"  # APIserver 地址,也就是master節(jié)點(diǎn)地址
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #這里使用國內(nèi)阿里云的鏡像倉庫

或者更簡單的:

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.13.5 #--------這里改成你集群對(duì)應(yīng)的版本
imageRepository: k8s.gcr.io #-------k8s官方的鏡像倉庫

重新生成默認(rèn)一年時(shí)長證書
在集群已經(jīng)部署好的情況下集群的證書過期,可以選擇對(duì)證書進(jìn)行重新生成愉舔。
單master或多master集群(etcd在集群內(nèi))處理:
1)休傍、備份原先的證書文件和配置文件:
cp -rp /etc/kubernetes /etc/kubernetes.bak
2)对省、刪除過期的證書文件:
(注意:1.13.0以下的版本需要?jiǎng)h除舊的證書迁筛,不然不會(huì)重新生成啤誊,1.13.5以上的就不用操作了會(huì)自動(dòng)更新的刃滓。ca.cer\ca.key\sa的這些證書不要?jiǎng)h除ca默認(rèn)就是10年沒必要重新生成,同時(shí)kubeadm在重新生成apiserver這些組件的證書的時(shí)候需要使用ca證書來進(jìn)行簽發(fā))

$ 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.*

3)欠痴、獲取k8s集群初始化的配置文件yaml文件:
kubeadm config view > kubeadm.yaml
4)迄靠、生成新的證書文件
生成證書有兩種方式一種是重新生成私鑰和公鑰,一種是使用存在的私鑰重新簽發(fā)喇辽。
生成相應(yīng)組件的證書(此格式會(huì)使用相應(yīng)組件的原來的key重新簽發(fā)證書):

$kubeadm alpha phase certs renew etcd-healthcheck-client --config kubeadm.yaml
$kubeadm alpha phase certs renew etcd-peer --config kubeadm.yaml
$kubeadm alpha phase certs renew etcd-server --config kubeadm.yaml
$kubeadm alpha phase certs renew front-proxy-client--config kubeadm.yaml
$kubeadm alpha phase certs renew apiserver-etcd-client --config kubeadm.yaml
$kubeadm alpha phase certs renew apiserver-kubelet-client --config kubeadm.yaml
$kubeadm alpha phase certs renew apiserver --config kubeadm.yaml
##或者重新簽發(fā)全部組件的證書
$kubeadm alpha phase certs renew all --config kubeadm.yaml
  kubeadm alpha certs renew all --config=kubeadm.yaml    #我用的這個(gè)掌挚,上邊那個(gè)我的平臺(tái)運(yùn)行失敗。
或如下格式(這種格式需要?jiǎng)h除原來存在的相應(yīng)證書和key菩咨,此格式會(huì)重新創(chuàng)建相應(yīng)組件的私鑰和公鑰):
$kubeadm init phase certs apiserver --config kubeadm.yaml

生成新的配置文件(admin.conf吠式、controller-manager.conf、kubelet.conf旦委、scheduler.conf):

mv /etc/kubernetes/*.conf    ~/.
kubeadm alpha phase kubeconfig all --config kubeadm.yaml
或如下格式重新生成相關(guān)組件的配置文件:
kubeadm init phase kubeconfig all --config kubeadm.yaml     #我用的這個(gè)

將新生成的admin.conf文件覆蓋掉.kube/config文件:

mv $HOME/.kube/config $HOME/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
chmod 644 $HOME/.kube/config

5)奇徒、重啟kube-apiserver,kube-controller,kube-scheduler,etcd這4個(gè)容器:(一定要ps -a要不有可能服務(wù)容器沒啟動(dòng))

docker ps -a | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash

6)、各節(jié)點(diǎn)重啟kubelet或相關(guān)組件:
systemctl restart kubelet

注意:若集群式采用高可用ha方式安裝的話有所區(qū)別缨硝,etd的相關(guān)證書需要另外簽發(fā)操作,要是之前搭建集群的時(shí)候已經(jīng)使用了長時(shí)間的則僅僅需要處理k8s其它組件的證書即可罢低。

再查看證書過期時(shí)間已經(jīng)更新了查辩。

參考文檔
http://www.reibang.com/p/289c62200818
https://www.cnblogs.com/skymyyang/p/11093686.html
https://blog.51cto.com/u_12988868/2587697
http://www.reibang.com/p/cdffaff82a34


客戶端kubelet證書輪換自動(dòng)續(xù)期:

kubectl證書輪換是在當(dāng)前證書即將過期時(shí),將自動(dòng)生成新的密鑰网持,并從k8s api申請(qǐng)新的證書宜岛。

kubelet 進(jìn)程接收 --rotate-certificates 參數(shù),該參數(shù)決定 kubelet 在當(dāng)前使用的證書即將到期時(shí)功舀,是否會(huì)自動(dòng)申請(qǐng)新的證書萍倡。 由于證書輪換是 beta 特性,必須通過參數(shù) --feature-gates=RotateKubeletClientCertificate=true 進(jìn)行啟用辟汰。

kube-controller-manager 進(jìn)程接收 --experimental-cluster-signing-duration 參數(shù)列敲,該參數(shù)控制證書簽發(fā)的有效期限。
當(dāng) kubelet 啟動(dòng)時(shí)帖汞,如被配置為自舉(使用--bootstrap-kubeconfig 參數(shù))戴而,kubelet 會(huì)使用其初始證書連接到 Kubernetes API ,并發(fā)送證書簽名的請(qǐng)求翩蘸。 可以通過以下方式查看證書簽名請(qǐng)求的狀態(tài):

$kubectl get csr

最初所意,來自節(jié)點(diǎn)上 kubelet 的證書簽名請(qǐng)求處于 Pending 狀態(tài)。 如果證書簽名請(qǐng)求滿足特定條件, 控制管理器會(huì)自動(dòng)批準(zhǔn)扶踊,此時(shí)請(qǐng)求會(huì)處于 Approved 狀態(tài)泄鹏。 接下來,控制器管理器會(huì)簽署證書秧耗, 證書的有效期限由 --experimental-cluster-signing-duration 參數(shù)指定命满,簽署的證書會(huì)被附加到證書簽名請(qǐng)求中削锰。

Kubelet 會(huì)從 Kubernetes API 取回簽署的證書墙懂,并將其寫入磁盤偿枕,存儲(chǔ)位置通過 --cert-dir 參數(shù)指定年局。 然后 kubelet 會(huì)使用新的證書連接到 Kubernetes API哑子。

當(dāng)簽署的證書即將到期時(shí)漱牵,kubelet 會(huì)使用 Kubernetes API桐罕,發(fā)起新的證書簽名請(qǐng)求宁否。 同樣地缩麸,控制管理器會(huì)自動(dòng)批準(zhǔn)證書請(qǐng)求铸磅,并將簽署的證書附加到證書簽名請(qǐng)求中。 Kubelet 會(huì)從 Kubernetes API 取回簽署的證書杭朱,并將其寫入磁盤阅仔。 然后它會(huì)更新與 Kubernetes API 的連接,使用新的證書重新連接到 Kubernetes API弧械。

1)八酒、開啟證書輪換:

修改kubelet啟動(dòng)配置文件增加如下參數(shù)
在/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf增加如下參數(shù):

Environment="KUBELET_EXTRA_ARGS=--feature-gates=RotateKubeletServerCertificate=true --feature-gates=RotateKubeletClientCertificate=true"

修改kube-controller-manager.yaml配置文件
在/etc/kubernetes/manifests/kube-controller-manager.yaml 添加如下參數(shù):

  - command:
    - kube-controller-manager
    - --experimental-cluster-signing-duration=87600h0m0s     #10年
    - --feature-gates=RotateKubeletServerCertificate=true
    - ....

創(chuàng)建 rbac 對(duì)象
創(chuàng)建rbac對(duì)象,允許節(jié)點(diǎn)輪換kubelet server證書:
vim kubelet-ca-update.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  name: system:certificates.k8s.io:certificatesigningrequests:selfnodeserver
rules:
- apiGroups:
  - certificates.k8s.io
  resources:
  - certificatesigningrequests/selfnodeserver
  verbs:
  - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubeadm:node-autoapprove-certificate-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:certificates.k8s.io:certificatesigningrequests:selfnodeserver
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:nodes

kubectl create -f kubelet-ca-update.yaml

參考文章http://www.reibang.com/p/289c62200818

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刃唐,一起剝皮案震驚了整個(gè)濱河市羞迷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌画饥,老刑警劉巖衔瓮,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抖甘,居然都是意外死亡热鞍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門衔彻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薇宠,“玉大人,你說我怎么就攤上這事米奸≈缃樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵悴晰,是天一觀的道長慢睡。 經(jīng)常有香客問我逐工,道長,這世上最難降的妖魔是什么漂辐? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任泪喊,我火速辦了婚禮,結(jié)果婚禮上髓涯,老公的妹妹穿的比我還像新娘袒啼。我一直安慰自己,他們只是感情好纬纪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布蚓再。 她就那樣靜靜地躺著,像睡著了一般包各。 火紅的嫁衣襯著肌膚如雪摘仅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天问畅,我揣著相機(jī)與錄音娃属,去河邊找鬼。 笑死护姆,一個(gè)胖子當(dāng)著我的面吹牛矾端,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播卵皂,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼秩铆,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了渐裂?” 一聲冷哼從身側(cè)響起豺旬,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柒凉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篓跛,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膝捞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愧沟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔬咬。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沐寺,靈堂內(nèi)的尸體忽然破棺而出林艘,到底是詐尸還是另有隱情,我是刑警寧澤混坞,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布狐援,位于F島的核電站钢坦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏啥酱。R本人自食惡果不足惜爹凹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镶殷。 院中可真熱鬧禾酱,春花似錦、人聲如沸绘趋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陷遮。三九已至滓走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拷呆,已是汗流浹背闲坎。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茬斧,地道東北人腰懂。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像项秉,于是被迫代替她去往敵國和親绣溜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容