이 시나리오에서는 Kubernetes가 Readiness 및 Liveness Probe를 사용하여 컨테이너 상태를 확인하는 방법을 배웁니다.
준비 프로브는 애플리케이션이 트래픽 처리를 시작할 준비가 되었는지 확인합니다.
이 프로브는 컨테이너가 시작된 문제를 해결하지만 프로세스는 여전히 워밍업 및 구성되어 트래픽을 수신할 준비가 되지 않았습니다.
활성 프로브는 애플리케이션이 정상이고 요청을 처리할 수 있는지 확인합니다.
프로브(Probe)
컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)이다.
진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 핸들러를 호출한다.
프로브 종류
1 livenessProbe
컨테이너가 동작중인지 여부
실패인 경우 kublet은 컨테이너를 죽이고, 해당 컨테이너는 재시작 정책의 대상이 된다.
2 reainessProbe
컨테이너가 요청을 처리할 준비가 되었는지 여부
실패인 경우 엔드포인트 컨트롤러는 파드에 연관된 모든 서비스들의 엔드포인트에서 파드의 IP주소를 제거한다.
3 startupProbe
컨테이너 내의 애플리케이션이 시작되었는지 여부
실패인 경우 kublet은 컨테이너를 죽이고, 컨테이너는 재시작 정책에 따라 처리된다.
1. 클러스터 시작하기
클러스터 시작하기
launch.sh
데모 애플리케이션 배포하기
replicationcontroller, service 생성
kubectl apply -f deploy.yaml
2. 준비상태인 프로브
Replication Controller를 배포할 때 각 포드에는 준비 상태 및 활성 상태 확인이 있습니다.
각 검사는 HTTP를 통한 상태 검사를 수행하기 위한 다음 형식을 갖습니다.
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 1
timeoutSeconds: 1
애플리케이션에 따라 다른 endpoints을 (ex) /ping) 호출하도록 설정을 변경할 수 있다.
파드 상태 확인하기
Kubectl은 특정 레이블로 배포된 파드를 반환합니다.
kubectl get pods
1 bad-frontend 파드
올바르게 시작되지 않았음을 나타내는 500 오류를 항상 반환하는 HTTP 서비스입니다.
상태 확인이 실패했기 때문에 0개의 컨테이너가 준비되었다고 표시됩니다. 또한 컨테이너의 다시 시작 시도 횟수를 나타낸다.
2 frontend 파드
준비된 상태라고 반환된다.
3. 프로브
현재 상태에서 실행 중인 두 번째 포드를 사용하여 오류 발생을 시뮬레이션할 수 있습니다.
서비스 충돌
HTTP 서버에는 500 오류를 반환하는 추가 끝점이 있습니다.
kubectl exec를 사용하면 엔드포인트를 호출할 수 있습니다.
pod=$(kubectl get pods --selector="name=frontend" --output=jsonpath={.items..metadata.name})
kubectl exec $pod -- /usr/bin/curl -s localhost/unhealthy
구성에 따라 Kubernetes는 Liveness Probe를 실행합니다.
프로브가 실패하면 Kubernetes는 실패한 컨테이너를 파괴하고 다시 생성합니다.
위의 명령을 실행하여 서비스를 중단하고 Kubernetes가 자동으로 복구하는 것을 지켜보십시오.
'도커&쿠버네티스' 카테고리의 다른 글
[katakoda] Use Kubernetes To Manage Secrets And Passwords (0) | 2022.04.02 |
---|---|
[katakoda] Running Stateful Services on Kubernetes (0) | 2022.03.29 |
[katakoda] Networking Introduction (0) | 2022.03.22 |
[katakoda] Deploy Guestbook Web App Example (0) | 2022.03.22 |
[katakoda] Deploy Containers Using YAML 컨테이너 배포하기 (0) | 2022.03.22 |
댓글