看韩国福利一区二区在线观看_中文字幕人妻中文_国产免费A在线观看_日本一道高清国产_无码一区二区波多野结衣播放搜索

您當(dāng)前的位置: 首頁 > 生活 > 正文

天天百事通!【容器TKE】K8s云服務(wù)如何實(shí)現(xiàn)容器優(yōu)雅停止舊Pod容器服務(wù)?

2023-02-15 00:57:56 來源:騰訊云 分享到:


【資料圖】

場(chǎng)景描述:

更新工作負(fù)載時(shí),Pod 的優(yōu)雅退出,使客戶端不會(huì)感受到更新時(shí)產(chǎn)生的抖動(dòng)和錯(cuò)誤。當(dāng) Pod 需要被刪除時(shí),Pod 能夠處理完已接受到的請(qǐng)求,此時(shí)入流量關(guān)閉,但出流量仍能走通。直到處理完所有已有請(qǐng)求和 Pod 真正刪除時(shí),出入流量才進(jìn)行關(guān)閉。

步驟1:使用 Annotation 標(biāo)明使用優(yōu)雅停機(jī)

以下為使用 Annotation 標(biāo)明使用優(yōu)雅停機(jī)示例,完整 Service Annotation 說明可參見 Service Annotation 說明。

kind: ServiceapiVersion: v1metadata:   annotations:     service.cloud.tencent.com/direct-access: "true" ## 開啟直連 Pod 模式    service.cloud.tencent.com/enable-grace-shutdown: "true"  # 表示使用優(yōu)雅停機(jī)  name: my-servicespec:   selector:     app: MyApp

步驟2:使用 preStop 和 terminationGracePeriodSeconds

步驟2為在需要優(yōu)雅停機(jī)的工作負(fù)載里配合使用 preStop 和 terminationGracePeriodSeconds。

容器終止流程

以下為容器在 Kubernetes 環(huán)境中的終止流程:

Pod 被刪除,此時(shí) Pod 里有 DeletionTimestamp,且狀態(tài)置為 Terminating。此時(shí)調(diào)整 CLB 到該 Pod 的權(quán)重為 0。kube-proxy 更新轉(zhuǎn)發(fā)規(guī)則,將 Pod 從 service 的 endpoint 列表中摘除掉,新的流量不再轉(zhuǎn)發(fā)到該 Pod。如果 Pod 配置了 preStop Hook ,將會(huì)執(zhí)行。kubelet 將對(duì) Pod 中各個(gè) container 發(fā)送 SIGTERM 信號(hào),以通知容器進(jìn)程開始優(yōu)雅停止。等待容器進(jìn)程完全停止,如果在 terminationGracePeriodSeconds 內(nèi) (默認(rèn)30s) 還未完全停止,將發(fā)送 SIGKILL 信號(hào)強(qiáng)制停止進(jìn)程。所有容器進(jìn)程終止,清理 Pod 資源。

具體操作步驟

使用 preStop要實(shí)現(xiàn)優(yōu)雅終止,務(wù)必在業(yè)務(wù)代碼里處理 SIGTERM 信號(hào)。主要邏輯是不接受新的流量進(jìn)入,繼續(xù)處理存量流量,所有連接全部斷開才退出,了解更多可參見 示例。若您的業(yè)務(wù)代碼中未處理 SIGTERM 信號(hào),或者您無法控制使用的第三方庫或系統(tǒng)來增加優(yōu)雅終止的邏輯,也可以嘗試為 Pod 配置 preStop,在其實(shí)現(xiàn)優(yōu)雅終止的邏輯,示例如下:
apiVersion: v1kind: Podmetadata:   name: lifecycle-demospec:   containers:   - name: lifecycle-demo-container    image: nginx    lifecycle:       preStop:         exec:           command:           - /clean.sh...

關(guān)鍵詞:

x 廣告

Copyright   2015-2022 太平洋超市網(wǎng)版權(quán)所有  備案號(hào):豫ICP備2022016495號(hào)-17   聯(lián)系郵箱:93 96 74 66 9@qq.com