🔠 클러스터의 각 노드에서 실행되는 에이전트. Kubelet은 pod에서 container가 확실하게 동작하도록 관리
probe
컨테이너가 실행된 후에는 kubelet이 container를 주기적으로 진단합니다. 이때 필요한 probe에는 2가지가 있습니다.
- livenessProbe
- 컨테이너가 실행됐는지 확인
- 진단이 실패되면 kubelet은 컨테이너를 종료시키고 재시작 정책에 따라서 container를 재시작
- Default state = Success
#liveness example
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 10
periodSeconds: 5
- readnessProbe
- 컨테이너가 실행된 후 실제로 서비스 요청에 응답할 수 있는지 진단
- 진단이 실패되면 endpoint controller 는 해당 pod에 연결된 모든 서비스를 대상으로 endpoint 정보를 제거
- 첫 번째 readinessProbe를 하기 전까지의 Default state = Failure
- readinessProbe를 지원하지 않는 container라면 Default state = Success
- readinessProbe를 지원하는 container라면 container가 실행된 다음 바로 서비스에 투입되어서 traffic을 받지 않습니다.
- 실제 traffic을 받을 준비가 되었음을 확인한 후 traffic을 받을 수 있습니다.
- java application처럼 process가 시작된 후 앱이 초기화될 때까지 시간이 걸리는 상황에 유용합니다.
Handler
container 진단은 container가 구현한 handler를 kubelet이 호출해서 실행합니다.
- ExecAction : container 안에 지정된 명령을 실행하고 종료 코드가 0일 때 Success라고 진단합니다.
- TCPSocketAction : container 안에 지정된 IP와 Port로 TCP 상태를 확인하고 Port가 열려 있으면 Success라고 진단합니다.
- HTTPGetAction : container 안에 지정된 IP, Port, 경로로 HTTP GET 요청을 보냅니다. 응답 상태 코드가 200~400사이면 Success라고 진단합니다.