본문으로 건너뛰기

7. 매니페스트와 파드

헬스 체크​

apiVersion: v1
kind: Pod
metadata:
name: webapl
spec:
containers:
- name: webapl
image: maho/webapl:0.1 # (1) 핸들 어를 구현한 애플리케이션
livenessProbe: # (2) 애플리케이션이 살아있는지 확인
httpGet:
path: /healthz # 확인 경로
port: 3000
initialDelaySeconds: 3 # 검사 개시 대기 시간
periodSeconds: 5 # 검사 간격
readinessProbe: # (3) 애플리케이션이 준비되었는지 확인
httpGet:
path: /ready # 확인 경로
port: 3000
initialDelaySeconds: 15
periodSeconds: 6

livenessProbe - 컨테이너가 살아있는지 확인

기본 설정으로 활성 프로브가 연속해서 3번 실패하면 kubelet이 컨테이너를 강제 종료하고 재기동한다.

헬스 체크는 파드가 스케줄 된 노드에 있는 kubelet이 수행한다. 노드의 하드웨어 장애 시에는 kubelet도 정지되기 때문에 노드의 장애 대책으로는 적합하지 않다. 따라서 노드의 장애 대책은 헬스 체크가 아닌 컨트롤러를 사용해야 한다.

사이드카 패턴​

하나의 파드 안에 여러 개의 컨테이너를 담아서 동시에 실행시키는 패턴

## 사이드카 파드 예제
#
apiVersion: v1
kind: Pod
metadata:
name: webserver
spec:
containers: ## 메인 컨테이너
- name: nginx
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html
name: contents-vol
readOnly: true

- name: cloner ## 사이드카 컨테이너
image: maho/c-cloner:0.1
env:
- name: CONTENTS_SOURCE_URL
value: 'https://github.com/takara9/web-contents'
volumeMounts:
- mountPath: /data
name: contents-vol

volumes: ## 공유 볼륨
- name: contents-vol
emptyDir: {}

참고 - https://gruuuuu.github.io/cloud/design-pattern/

pod 안의 메인 컨테이너를 확장하고 향상시키며 개선하는 역할을 하는 컨테이너를 Sidecar Container 라고 하며, 해당 패턴을 Sidecar Pattern이라고 합니다.