kubernetes 의 liveness 와 readiness
역할: 용기 의 재 부팅 여 부 를 판단 하 는 데 사 용 됩 니 다.탐측 은 모두 kbelet 에서 실 행 됩 니 다.
장면: pod 에 여러 개의 container 가 있 습 니 다. 장시간 실 행 된 후에 특정한 container 가 이상 하지만 running 상태 (예 를 들 어 프로그램 잠 금) 로 인해 전체 서 비 스 를 사용 할 수 없 지만 pod 상 태 는 running 상태 입 니 다. container 를 다시 시작 해 야 합 니 다.
예 를 들 어 pod 에는 nginx container, business container 가 포함 되 어 있 습 니 다. nginx 는 고객 의 요 구 를 받 고 business 는 구체 적 인 업무 처 리 를 책임 집 니 다. business container 가 지연 되면 pod 운행 상 태 는 정상 이지 만 서 비 스 는 사용 할 수 없습니다.이때 pod 를 다시 시작 해 야 하기 때문에 liveness 는 두 개 를 추가 하여 각각 container 에 추가 해 야 합 니 다.
실현:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
http request:
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
TCP prob:
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
Readiness:
역할: pod 가 접근 할 수 있 는 지 판단 하 는 데 사 용 됩 니 다. 요청 이 실 패 했 을 경우 service 백 엔 드 서비스 목록 에서 제거 합 니 다.
장면: 서 비 스 는 대량의 캐 시 데이터 에 의존 해 야 하지만 데 이 터 는 load 가 완성 되 지 않 았 습 니 다. 이때 서 비 스 는 사용 할 수 없습니다.서 비 스 는 다른 프로 세 스 의 시작 에 의존 합 니 다. 완전히 시작 되 기 전에 서 비 스 를 사용 할 수 없습니다.서 비 스 는 데이터베이스 등 구성 요소 에 의존 합 니 다. 모든 시작 이 완료 되 지 않 았 기 때문에 서 비 스 를 사용 할 수 없습니다.
실현: Liveness 와 같다
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
공통 매개 변수 설명:
initial Delay Seconds: 용기 가 시 작 된 후 liveness 나 readiness 가 초기 화 되 기 전의 지연 시간 입 니 다.
periodSeconds: 프로 브 를 요청 하 는 주파수, 기본 10 초, 최소 1 초.
timeout Seconds: 요청 시간 초과, 기본 1 초, 최소 1 초
successThreshold: 요청 이 실 패 했 을 때 최소 연속 성공 횟수 가 필요 합 니 다. 기본 값 은 한 번 입 니 다. liveness 는 한 번 (readiness 는 1 보다 클 수 있 습 니 다) 이 고 최소 값 은 1 입 니 다.
failure Threshold: 프로 브 요청 이 실 패 했 을 때 재 부팅 을 시도 하 는 최대 횟수 입 니 다. Giving up in case of liveness probe means restorting the Pod. In case of readiness probe the Pod will be marked Unready. Defaults to 3. 최소 값 은 1 입 니 다.
Http request 형식 만 의 인자:
host: 연결 할 호스트 이름, 기본 값 은 pod ip 입 니 다. You probably want to set "Host" in httpHeaders instead.
scheme: 어떤 프로 토 콜 (HTTP 또는 HTTPS) 을 사용 합 니까? 기본 HTTP
path: 접근 한 서비스 주소
httpHeaders: 요청 헤 더 를 지정 합 니 다. HTTP 는 반복 헤 더 를 허용 합 니 다.
port: 용기 에 접근 하 는 포트 번호, [1, 65535]
결함:
readiness 와 liveness 는 다 중 포트 (TCP 방식) 를 지원 하지 않 습 니 다. 다 중 주소 검증 (http) 을 요청 합 니 다. 미 러 가 규범 에 맞지 않 으 면 여러 프로그램 이 걸 려 있 으 면 여러 프로 세 스 의 감청 을 할 수 없습니다. 현재 1.15 버 전 은 지원 되 지 않 습 니 다. 나중에 fix 가 될 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[K8s] Kubernetes Pod를 다시 시작하는 방법이 경우 빠르고 쉽게 다시 시작할 수 있는 방법이 필요할 수 있습니다. 따라서 단일 포드를 다시 시작하는 간단한 방법이 없습니다. 이 문서에서 다룰 몇 가지 사용 가능한 옵션이 있습니다. ReplicaSet에서 유지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.