溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ingress rollingUpdate 踩坑記錄

發(fā)布時(shí)間:2020-06-03 09:33:00 來(lái)源:網(wǎng)絡(luò) 閱讀:1121 作者:筑夢(mèng)攻城獅 欄目:云計(jì)算

網(wǎng)上很多文檔都說(shuō)deployment 配置readiness就可以實(shí)現(xiàn)無(wú)損rolling update,事實(shí)真的是這樣嗎?

最近我們?cè)谏a(chǎn)環(huán)境發(fā)現(xiàn)一個(gè)現(xiàn)象,當(dāng)deployment 定義的 replicas 實(shí)例數(shù)只有1個(gè)的時(shí)候,執(zhí)行rollingupdate 會(huì)有坑


按照官方文檔的說(shuō)明,deployment 執(zhí)行rollingupdate ?在啟動(dòng)時(shí)會(huì)先拉起新版本pod再干掉舊版本的pod,逐步將所有pod 升級(jí)成新版本


但實(shí)際測(cè)試過(guò)程中發(fā)現(xiàn),執(zhí)行rollingupdate 時(shí),舊replicas 中的pod 立馬會(huì)被干掉一個(gè),如所示:

rollingupdate 前:

root@ubuntu:~?#?kubectl?get?rs
NAME?????????????????????????????????????????DESIRED???CURRENT???READY?????AGE
webtest-static-test-com-56678f6856???1?????????1?????????1?????????50m


rollingupdate 中:

root@ubuntu:~?#?kubectl?get?rs
NAME?????????????????????????????????????????DESIRED???CURRENT???READY?????AGE
webtest-static-test-com-56678f6856???0?????????0?????????0?????????50m
webtest-static-test-com-7d785c987?????1?????????1?????????0?????????25m


執(zhí)行rollingupdate 時(shí),deployment 會(huì)創(chuàng)建一個(gè)新的rs,隨即將舊rs 中的pod 干掉

可以看到這里不管新舊pod READY 的字段都是0,這里會(huì)有問(wèn)題,執(zhí)行rollingupdate 如果新版本服務(wù)啟動(dòng)比較慢(例如tomcat),那這段時(shí)間服務(wù)都不可用


rollingupdate 后:

root@ubuntu:~?#?kubectl?get?rs
NAME?????????????????????????????????????????DESIRED???CURRENT???READY?????AGE
webtest-static-test-com-56678f6856???1?????????1?????????1?????????50m
webtest-static-test-com-7d785c987?????0?????????0?????????0?????????25m



從另外一個(gè)終端每隔1s 發(fā)起一次curl 請(qǐng)求,可以看到升級(jí)期間服務(wù)中斷:

root@ubuntu:?~?#?for?i?in?{0..99};do?curl?http://webtest-static.test.com/index.html?;echo;sleep?1;done

This?is?server01?-?Version?-?2

This?is?server01?-?Version?-?2

<html>
<head><title>503?Service?Temporarily?Unavailable</title></head>
<body>
<center><h2>503?Service?Temporarily?Unavailable</h2></center>
<hr><center>nginx/1.15.8</center>
</body>
</html>

<html>
<head><title>503?Service?Temporarily?Unavailable</title></head>
<body>
<center><h2>503?Service?Temporarily?Unavailable</h2></center>
<hr><center>nginx/1.15.8</center>
</body>
</html>

...?...?

This?is?server01?-?Version?-?3

This?is?server01?-?Version?-?3


當(dāng)實(shí)例數(shù)(replicas 數(shù)) > 1 時(shí),rollingupdate 過(guò)程中服務(wù)不會(huì)中斷


附:deployment yaml

apiVersion:?extensions/v1beta1
kind:?Deployment
metadata:
??name:?webtest-static-test-com
spec:
??strategy:
????type:?RollingUpdate
????rollingUpdate:
??????maxSurge:?1
??????maxUnavailable:?1

??replicas:?1
??template:
????metadata:
??????labels:
????????app:?webtest-static-test-com
????????domain:?webtest-static.test.com
????????version:?v1
????spec:
??????imagePullSecrets:
??????-?name:?registry.cn-hangzhou.aliyuncs.com
??????containers:
??????-?name:?webtest-static-sysop-duowan-com
????????image:?registry.cn-hangzhou.aliyuncs.com/test/webtest_static:2.6
????????command:?["/bin/bash","/data/scripts/run.sh"]
????????-?name:?DLC-WEBTEST--WEBTEST1
??????????value:?"true"
????????ports:
????????-?containerPort:?80
????????readinessProbe:
??????????exec:
????????????command:
????????????-?curl
????????????-?http://webtest-static.test.com/index.html
????????????-?-x
????????????-?"127.0.0.1:80"
??????????initialDelaySeconds:?20
??????????periodSeconds:?5
??????????successThreshold:?1
---
apiVersion:?v1
kind:?Service
metadata:
??name:?webtest1-svc
??labels:
????app:?webtest-static-test-com
????test:?test1
spec:
??ports:
??-?port:?80
????targetPort:?80
????protocol:?TCP
????name:?http
??selector:
????app:?webtest-static-test-com


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI