中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用K8S檢查Istio Service流量健康講析

發布時間:2020-04-30 14:11:04 來源:億速云 閱讀:436 作者:三月 欄目:云計算

本文主要給大家介紹使用K8S檢查Istio Service流量健康講析,文章內容都是筆者用心摘選和編輯的,使用K8S檢查Istio Service流量健康講析具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下主題內容吧。

Istio利用k8s的探針對service進行流量健康檢查,有兩種探針可供選擇,分別是liveness和readiness:

liveness探針用來偵測什么時候需要重啟容器。比如說當liveness探針捕獲到程序運行時出現的一個死鎖,這種情況下重啟容器可以讓程序更容易可用。

readiness探針用來使容器準備好接收流量。當所有容器都ready時被視為pod此時ready。比如說用這種信號來控制一個后端服務,當pod沒有到ready狀態時,服務會從負載均衡被移除。

使用場景:

liveness探針被用來移除異常的pod,不重啟pod就無法恢復的應用常使用liveness探針。比如前文提到的死鎖,進程會一直處于活躍狀態,k8s會認為正常并繼續發送流量。但使用liveness探針之后會發現應用已經不再處理請求,繼而重啟異常pod。

readiness探針被用來控制流量進入pod。比如應用程序需要加載一個大的文件或者需要啟動后進行一些配置。但默認只要容器進程啟動完成就會有流量發送過來。使用readiness探針會一直等待直到完成所有加載或配置再讓流量進入。

兩種探針的配置相似,區別在于使用livenessProbe還是readinessProbe字段

探針配置參數:

探針有以下幾個參數:

initialDelaySeconds:容器啟動之后到啟動探針之間的時延

periodSeconds:探針的循環執行時間,最小單位為1秒

timeoutSeconds:探針超時時間,默認值1秒

successThreshold: 成功閾值數,失敗之后最小的連續成功信號數,liveness必須是1

failureThreshold:失敗閾值數,當探針失敗之后,在放棄之前k8s嘗試重新執行探針次數,如果是liveness探針放棄意味著重啟容器,readiness探針意味著pod標記為unready,默認值為3次。

HTTP探針還有以下額外的參數:

host: 所連接主機名,默認值是pod IP

scheme: HTTP或者HTTPS

path: 訪問HTTP 云服務器的路徑

httpHeaders: 訪問HTTP的報頭

port:訪問容器的端口

探針可以進行三種操作:

命令行:在容器中執命令行操作,exit 0為成功狀態

HTTP請求:向容器發送HTTP GET請求,如果返回值為200-400之間為成功狀態

TCP 請求:向指定端口發送TCP請求,如果該端口開放監聽,則為成功

下面我們來演示以下健康檢查的操作:

命令行操作

首先準備busybox鏡像,設置如下的yaml配置文件:

使用K8S檢查Istio Service流量健康講析

在配置文件中我們設置了一個liveness探針,在容器啟動之后的5s,每隔5s去執行一下訪問/tmp/healthy這個文件的操作,如果操作成功返回0,則為容器健康,如果返回值不為0, 會重啟容器。

當容器啟動之后會執行:

touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600

前30s會建立/tmp/healthy文件,30s之后刪除,此時訪問會返回錯誤.

使用kubectl create -f ./your-exec-liveness.yaml建立pod
使用K8S檢查Istio Service流量健康講析

在30s之內通過kubectl describe pod liveness-exec來查看pod狀態,為健康:

使用K8S檢查Istio Service流量健康講析

在30s之后查看pod的狀態,發現無法訪問文件,返回不健康:

使用K8S檢查Istio Service流量健康講析

之后查看pod的狀態,pod的重啟次數為1,此時通過liveness探針檢測到不健康狀態已經重啟pod。

使用K8S檢查Istio Service流量健康講析

如果使用readiness探針,需要修改上文your-exec-liveness.yaml的紅框字段:

使用K8S檢查Istio Service流量健康講析

通過與上文相同的方法,在30s之前查看pod的狀態,為ready:

使用K8S檢查Istio Service流量健康講析

在30s之后查看pod狀態,readiness探針將應用容器置為unready, ready的容器是istio-proxy:

使用K8S檢查Istio Service流量健康講析

可以看到readiness探針并不會重啟容器。

HTTP請求

另一種使用liveness探針的方法是HTTP GET請求,可以用來監測網頁的運行狀態,我們用google liveness鏡像來進行演示:

使用K8S檢查Istio Service流量健康講析

這里我們讓HTTP的云服務器/healthz路徑前10s返回200 的OK狀態,10s之后返回狀態500。

設置如下的配置文件:

使用K8S檢查Istio Service流量健康講析

liveness探針會向容器的8080端口發送請求訪問/healthz, 在容器啟動3s之后每隔3s發送一次。我們建立pod并查看pod的運行狀態kubectl describe pod liveness-http:

使用K8S檢查Istio Service流量健康講析

會發現10s之后 liveness探針監測到了返回值是500,狀態標記為不健康。

TCP請求

兩種探針還可以共同使用,下面以TCP請求為例,TCP和HTTP連接類似。使用google的goproxy鏡像,該鏡像會在8080端口開放TCP socket連接,使用如下的配置文件:

使用K8S檢查Istio Service流量健康講析

我們用探針去訪問8000端口查看pod狀態;此時理論上應該無法連接:

使用K8S檢查Istio Service流量健康講析

可以看到readiness探針會每隔10s監測,無法訪問時會將pod置于unready狀態,liveness探針20s監測,無法成功則重啟pod。

通過以上演示我們了解了如何配置兩種探針和執行三種操作。通過合理的探針配置,可以實時監控Istio各個pod的運行狀態,提供方便的應用治理手段。

看完以上關于使用K8S檢查Istio Service流量健康講析,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業知識信息 ,可以持續關注我們的行業資訊欄目的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子长县| 西畴县| 芒康县| 晋城| 唐海县| 库伦旗| 高邮市| 金寨县| 宣化县| 崇信县| 田林县| 普陀区| 清镇市| 翼城县| 长垣县| 内丘县| 阳信县| 甘泉县| 秦皇岛市| 察雅县| 怀仁县| 太仓市| 东莞市| 南充市| 永宁县| 卓尼县| 阿勒泰市| 乌什县| 屏东市| 华阴市| 米脂县| 鹤山市| 南城县| 盘山县| 怀仁县| 璧山县| 潜山县| 五原县| 仁布县| 武义县| 南丹县|