앞전에 apply명령을 이용해서 직접 pod를 생성 했는데요.
yaml파일을 위해 pod를 다루게 되면, 문제가 하나 있습니다.
이렇게 생성하는 pod는 일부가 다운되면, 해당 pod는 다시 살릴 수 없습니다.
예를 들어 pod를 강제로 삭제해 봅시다.
# kubectl delete <파드명>
kubectl delete pod/webapp-v-0-1
# 모든 포드 삭제
kubectl delete pod --all
service는 살아있지만, pod는 다운되었기에 애플리케이션은 실행되지 않습니다.
(쿠버네티스는 이런 포드를 자동으로 restart하지 않습니다)
👉 파드의 생명주기( life cycle)이 끝나버립니다.
그렇다면 어플리케이션에 장애가 일어났을 때 대응할 수 있도록 마이크로서비스에서 대응하는 방법은 무엇일 까요?
👉 아래처럼 파드를 여러개 만들게 됩니다.
apiVersion: v1
kind: Pod
metadata:
name: webapp # 1
labels:
app: webapp
release: "0" # 버전명 추가
spec:
containers:
- name: webapp
image: coding404/k8s-coding404-webapp-react:v0
---
# 동일한 녀석을 여러개....???????????? 20개 라면????
apiVersion: v1
kind: Pod
metadata:
name: webapp1 # 2
labels:
app: webapp
release: "0"
spec:
containers:
- name: webapp
image: coding404/k8s-coding404-webapp-react:v0
## 생략..........
포드를 직접 관리하는 것보다는 래플리카세트를 이용하여 관리합니다.