自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes中配置livenessProbe、ReadinessProbe和StartupProbe

云計(jì)算 云原生
livenessProbe、readinessProbe和startupProbe都可以稱為健康檢查,這幾種健康檢查類型都支持四種檢查方式:exec命令、httpGet、tcpSocket和grpc。

livenessProbe、readinessProbe和startupProbe作用

kubelet使用livenessProbe(存活探針)來判斷何時(shí)重啟容器。例如,當(dāng)程序中產(chǎn)生死鎖的時(shí)候,程序還在運(yùn)行,通過livenessProbe可以檢測(cè)到程序已不能正常提供服務(wù)。這種情況下重啟容器可以讓程序恢復(fù)可用的狀態(tài)(雖然程序中存在會(huì)導(dǎo)致死鎖的bug)。如果沒有配置livenessProbe,則默認(rèn)狀態(tài)為Success。

kubelet使用readinessProbe(就緒探針)來判斷容器何時(shí)準(zhǔn)備好了接受流量。當(dāng)Pod中的所有容器都準(zhǔn)備好時(shí),Pod就被認(rèn)為準(zhǔn)備好了。最重要的用途是用來控制哪些pod被用作服務(wù)的后端。當(dāng)一個(gè)Pod未準(zhǔn)備好時(shí),在負(fù)載均衡中會(huì)被移除。如果沒有配置readinessProbe,則默認(rèn)狀態(tài)為Success。

Kubernetes從1.17版本開始新增了startupProbe(啟動(dòng)探針),kubelet使用startupProbe來判斷容器應(yīng)用程序何時(shí)啟動(dòng)。如果配置了startupProbe,等啟動(dòng)成功后才會(huì)進(jìn)行l(wèi)ivenessProbe和readinessProbe。這樣可以避免應(yīng)用程序在啟動(dòng)過程被livenessProbe和readinessProbe影響。如果沒有配置startupProbe,則默認(rèn)狀態(tài)為Success。

k8s中的四種健康檢查方式

livenessProbe、readinessProbe和startupProbe都可以稱為健康檢查,這幾種健康檢查類型都支持四種檢查方式:exec命令、httpGet、tcpSocket和grpc。其中exec命令行方式通用性最強(qiáng),適用于大部分場(chǎng)景,tcpSocket方式適用于TCP類型的服務(wù),httpGet方式適用于http類型的服務(wù),grpc方式適用于grpc類型的服務(wù)。

  • exec:可以將自定義的健康檢查方法封裝成命令行(CLI)工具使用exec來執(zhí)行,如果檢測(cè)結(jié)果是正常,命令行返回0值,否則返回非0值。
  • httpGet:通過容器的IP地址、端口及服務(wù)提供的http接口路徑,發(fā)起一個(gè)HTTP Get請(qǐng)求,如果響應(yīng)的狀態(tài)碼大于等于200且小于400,則認(rèn)為服務(wù)是健康的。
  • tcpSocket:通過容器的IP地址和端口,發(fā)起一個(gè)tcp請(qǐng)求,能建立連接則認(rèn)為服務(wù)是健康的。
  • grpc:通過容器的IP地址和端口,發(fā)起一個(gè)grpc請(qǐng)求(前提是服務(wù)實(shí)現(xiàn)了grpc健康檢查協(xié)議),返回服務(wù)健康的結(jié)果正常則認(rèn)為服務(wù)是健康的。

配置探針的常用可選參數(shù)如下:

參數(shù)名稱

默認(rèn)值

最小值

描述

initialDelaySeconds

0秒

0秒

容器啟動(dòng)后多久開始進(jìn)行第一次探測(cè)。

periodSeconds

10秒

1秒

探測(cè)頻度,頻率過高會(huì)對(duì)pod帶來較大的額外開銷,頻率過低則無法及時(shí)反映容器真實(shí)情況。

timeoutSeconds

1秒

1秒

探測(cè)超時(shí)時(shí)間。

failureThreshold

3

1

處于成功狀態(tài)時(shí),探測(cè)連續(xù)失敗幾次可被認(rèn)為失敗。

successThreshold

1

1

處于失敗狀態(tài)時(shí),探測(cè)連續(xù)成功幾次,被認(rèn)為成功。

配置示例

livenessProbe、readinessProbe和startupProbe的配置方法基本類似,下面就以配置livenessProbe為例。

exec方式

apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: registry.k8s.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5

httpGet方式

apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3

tcpSocket方式

apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: registry.k8s.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20

grpc方式

apiVersion: v1
kind: Pod
metadata:
name: etcd-with-grpc
spec:
containers:
- name: etcd
image: registry.k8s.io/etcd:3.5.1-0
command: [ "/usr/local/bin/etcd", "--data-dir", "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0:2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug"]
ports:
- containerPort: 2379
livenessProbe:
grpc:
port: 2379
initialDelaySeconds: 10

更多關(guān)于健康檢查配置的說明可以參考kubernetes官方文檔:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2025-02-18 00:00:00

2023-06-26 07:32:43

Kubernetes容器

2021-09-27 06:50:05

PodLivenessStartupProb

2023-07-29 11:54:44

KuberneteNFS

2024-04-30 11:14:19

KubernetesReplicaSet數(shù)量

2022-08-05 08:48:33

KubernetesEtcd數(shù)據(jù)

2021-12-06 08:00:00

Kubernetes容器數(shù)據(jù)

2024-03-18 00:00:04

AIKubernetes機(jī)器學(xué)習(xí)

2025-01-08 09:26:24

KubernetesContainer容器

2019-07-12 16:28:32

MacKubernetes

2024-04-18 15:22:54

2018-07-11 15:32:57

KubernetesDNS方式

2023-02-16 08:03:01

開源Kubernetes

2023-10-20 08:00:55

PodRainbow部署

2020-03-19 11:12:21

云計(jì)算KubernetesDocker

2020-07-31 07:00:00

Kubernetes容器Linux

2020-07-09 08:26:42

Kubernetes容器開發(fā)

2019-07-04 13:10:53

Docker設(shè)計(jì)云計(jì)算

2019-11-20 09:15:53

KubernetesPod

2020-03-16 13:16:48

Kubernetes選型踩坑
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)