cleanUrl: /k8s/replica-replication-controller-managing-pod
disqus: true
컨테이너를 모니터링하고 실패하면 다시 시작하는 방법을 배울 것이다. 컨트롤러가 파드를 관리하지 않는 한 새로운 컨트롤러로 대체 되지 않는다. Replica set 으로 pod 를 관리하면 반드시 n 개의 pod 가 실행됨을 보장하는데 이에 대해서 자세히 다룬다.
컨테이너 주 프로세스에 crash 가 발생하면 kublet 은 컨테이너를 다시 시작한다
crash 가 발생한 container 는 자동으로 다시 시작하고, OOM 와 같은 GC 문제에 의한 오류의 경우 process 를 죽이고 다시 실행한다.
하지만 무한 루프와 같은 application 문제로 인한 오류는 해결해주지 못하기 때문에 모니터링 도구가 필요하다
k8s 는 probe 를 통해 container 가 살아 있는지 3가지 메커니즘으로 확인할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: kubia-liveness
spec:
containers:
- image: luksa/kubia-unhealthy # 실패를 반환할 container 이미지
name: kubia
livenessProbe:
httpGet:
path: / # probe 가 요청해야 하는 경로
port: 8080 # probe 가 연결해야 하는 포트
livenessProbe
를 통해서 정의한다.
예제에는 문제가 있는 container 이미지를 사용해 실패하면 재시작 하는지 확인한다
kubectl get po kubia-liveness
RESTARTS
는 pod 가 몇번 재실행 되었는지 반환한다
kubectl describe
로 컨테이너가 다시 시작된 이유를 파악할 수 있다.-