日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

k8s探针检测php,k8s实践11:kubernetes监测探针简单测试

發布時間:2024/3/12 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s探针检测php,k8s实践11:kubernetes监测探针简单测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

探針實踐

1.兩種探針

readiness probe(就緒探針)

監測容器是否就緒?只有pod里的容器就緒,kubelet才會認為pod處于就緒狀態.

就緒探針的作用是控制哪些pod可以作為svc的后端,如果pod不是就緒狀態,就把它從svc load balancer中移除.

liveness probe(存活探針)

監測容器是否存活?如果容器中的應用出現問題,liveness將檢測到容器不健康會通知kubelet,kubelet重啟該pod容器.

2.使用探針的三種方式

官網介紹了三種,見下:

command命令執行

http request訪問

tcp socket連接

個人比較喜歡用第三種方式,tcp socket.

3.tcp socket方式學習測試

tcp socket方式

這個方式比較好理解.

比如說,起一個nginx容器,nginx服務提供的端口是80端口.

配置tcp socket 探針,設定隔一個時間,用tcp方式連接80端口,如果連接成功,就返回容器健康或者就緒,如果連接失敗,返回容器不健康或者不就緒,kubelet重啟容器.

3.1.逆向思維示例:

簡單思路:探針tcp socket連接不存在的8080端口,必然連接失敗報錯,從而實現pod不斷重啟.

起一個nginx的pod容器,提供服務端口80.配置探針連接端口8080,第一次監測時間為pod容器啟動后的45s,第一次監測后每隔20s監測一次.

kubectl apply -f tanzhen-test1.yaml

pod/httpd created

cat tanzhen-test1.yaml

apiVersion: v1

kind: Pod

metadata:

name: httpd

labels:

app: httpd

spec:

containers:

- name: httpd

image: nginx

ports:

- containerPort: 80

readinessProbe:

tcpSocket:

port: 8080

initialDelaySeconds: 45

periodSeconds: 20

livenessProbe:

tcpSocket:

port: 8080

initialDelaySeconds: 45

periodSeconds: 20

測試結果,pod容器一直在重啟.

探針自動tcp連接容器ip:8080端口,失敗.所以容器一直重啟.

describe報錯見下

Warning Unhealthy 8s (x2 over 28s) kubelet, k8s-node2 Readiness probe failed: dial tcp 172.30.92.6:8080: connect: connection refused

Warning Unhealthy 1s (x2 over 21s) kubelet, k8s-node2 Liveness probe failed: dial tcp 172.30.92.6:8080: connect: connection refused

3.2.正常配置示例

正常配置是連接提供服務的80端口.

簡單思路:理論上來說,長時間運行的應用程序最終會過渡到中斷狀態,除非重新啟動,否則無法恢復.Kubernetes提供了活性探針來檢測和補救這種情況.這是配置探針的根本原因,以防萬一.

cat tanzhen-test2.yaml

apiVersion: v1

kind: Pod

metadata:

name: httpd

labels:

app: httpd

spec:

containers:

- name: httpd

image: nginx

ports:

- containerPort: 80

readinessProbe:

tcpSocket:

port: 80

initialDelaySeconds: 45

periodSeconds: 20

livenessProbe:

tcpSocket:

port: 80

initialDelaySeconds: 45

periodSeconds: 20

3.3.正常配置模擬測試案例

簡單思路:起nginx容器,然后執行命令殺死nginx進程,設定探針監測連接tcp socket 80端口,當nginx進程被殺死后,tcp socket連接失敗,探針監測容器為不健康不就緒,kubelet重啟容器.

cat tanzhen-test3.yaml

apiVersion: v1

kind: Pod

metadata:

name: httpd

labels:

app: httpd

spec:

containers:

- name: httpd

image: nginx

args:

- /bin/sh

- -c

- sleep 60;nginx -s quit

ports:

- containerPort: 80

readinessProbe:

tcpSocket:

port: 80

initialDelaySeconds: 20

periodSeconds: 10

livenessProbe:

tcpSocket:

port: 80

initialDelaySeconds: 20

periodSeconds: 10

配置參數說明:

容器啟動后,執行nginx -s quit殺死Nginx進程

容器啟動20s后開始執行readiness和liveness檢測

容器啟動后35s左右

探針監測到nginx進程已經死掉,無法連接到80端口,整個重啟事件記錄,見下:

Events:

Type Reason Age From Message

---- ------ ---- ---- -------

Normal Scheduled 90s default-scheduler Successfully assigned default/httpd to k8s-node1

Normal Pulling 88s kubelet, k8s-node1 Pulling image "nginx"

Normal Pulled 57s kubelet, k8s-node1 Successfully pulled image "nginx"

Normal Created 57s kubelet, k8s-node1 Created container httpd

Normal Started 56s kubelet, k8s-node1 Started container httpd

Warning Unhealthy 9s (x3 over 29s) kubelet, k8s-node1 Readiness probe failed: dial tcp 172.30.78.6:80: connect: connection refused

Warning Unhealthy 8s (x3 over 28s) kubelet, k8s-node1 Liveness probe failed: dial tcp 172.30.78.6:80: connect: connection refused

Normal Killing 8s kubelet, k8s-node1 Container httpd failed liveness probe, will be restarted

總結

以上是生活随笔為你收集整理的k8s探针检测php,k8s实践11:kubernetes监测探针简单测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。