[Kubernetes] kubelet

🔠 클러스터의 각 노드에서 실행되는 에이전트. 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라고 진단합니다.

Leave a Comment