kubernetes 의 liveness 와 readiness

3473 단어 k8sreadinessliveness
Liveness:
역할: 용기 의 재 부팅 여 부 를 판단 하 는 데 사 용 됩 니 다.탐측 은 모두 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 가 될 것 입 니 다.

좋은 웹페이지 즐겨찾기