반응형
1. Probe 개념
1.1. Readiness, Startup
- 파드의 상태를 체크 할 수 있는 2가지의 지표가 존재
- get을 통해 확인 가능한 STATUS 정보
- describe을 통해 확인 가능한 Conditions 정보
- STATUS와 Conditions이 Running/True 상태임에도 불구하고 컨테이너가 초기화 프로세스(cold start)를 거치는 경우 파드에 정상적으로 접근 불가
- 컨테이너 생성 및 HTTP 요청에 대한 응답을 할 수 있는지 확인하기 위해 Readiness Probe를 활용
- 컨테이너에 배포된 서비스의 초기화 프로세스(cold start)가 완료되어 서비스를 제공할 수 있는지 확인하기 위해 Startup Probe를 활용
1.2. Liveness
- 파드에 장애가 발생하는 경우 k8s 특성상 파드를 재생성 및 삭제함
- 하지만 파드 자체에는 문제가 없으나 컨테이너에 장애가 발생한 경우 파드는 복구되지 않고 접근이 불가능한 상태로 지속적으로 존재하게 됨
- 이러한 문제를 해결하기 위해 Liveness Probe를 활용
- Liveness Probe를 설정할 경우 지속적으로 컨테이너의 상태를 체크하고 비정상일 경우 파드를 재생성
1.3. 한줄 요약
- probe는 컨테이너의 상태를 확인하기 위한 기능
2. Probe 핸들러
- 컨테이너의 상태를 확인하는 주체는 kubelet이며, kubelet은 핸들러를 활용해 컨테이너의 상태를 확인
- 3종류의 핸들러 존재
- HttpGetAction : 지정된 포트와 URL로 HTTP Get 요청을 전송해 응답 코드가 200 ~ 400 구간인 경우 성공 이외의 경우 실패
httpGet:
path: /healthcheck
port: probeport
- ExecAction : 컨테이너에서 관리자가 지정한 명령어를 실행. 명령어 상태 코드가 0일 경우 성공 이외의 경우 실패
exec:
command:
- cat
- /tmp/healthy
- TCPAction : 지정된 포트로 TCP 소켓 연결 시도. 연결 성공 시 성공
tcpSocket:
port: 8080
3. Probe 옵션
- Probe 설정을 세밀하게 조정하기 위한 옵션이 존재
- 세부 내용은 공식 문서 참고
4. Probe 설정
- Readiness, Liveness, Startup Probe 모두 설정 방법은 동일하며 probe 이름만 수정 필요
- HTTP Probe 설정
apiVersion: v1
kind: Pod
metadata:
name: readinessTest
spec:
containers:
- name: nginx
image: nginx
readinessProbe:
httpGet:
path: /healthcheck
port: 8080
- exec Probe 설정
apiVersion: v1
kind: Pod
metadata:
name: readinessTest
spec:
containers:
- name: nginx
image: nginx
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
- TCP Probe 설정
apiVersion: v1
kind: Pod
metadata:
name: readinessTest
spec:
containers:
- name: nginx
image: nginx
readinessProbe:
tcpSocket:
port: 8080
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes Statefulset 개념 및 설정 (0) | 2023.03.16 |
---|---|
Kubernetes Job, CronJob 개념 및 설정 (0) | 2023.03.16 |
Kubernetes Ingress 개념 및 설정 (0) | 2023.03.16 |
Kubernetes StorageClass 개념 및 설정 (0) | 2023.03.16 |
Kubernetes PV·PVC 개념 및 설정 (0) | 2023.03.16 |