1. 다중 컨테이너
초기 컨테이너를 설정하고, 그 다음 동작할 컨테이너를 설정해 준다
다중 컨테이너 설정 (정상 작동)
kind: Pod
metadata:
name: my-multi-container-pod
spec:
initContainers:
- name: my-initializer
image: busybox
command: ["sh", "-c", "sleep 10"]
containers:
- name: nginx
image: nginx:1.24
- name: redis
image: reids
다중 컨테이너 설정( 비정상 작동)
apiVersion: v1
kind: Pod
metadata:
name: my-multi-container-pod
spec:
initContainers:
- name: my-initializer
image: busybox
command: ["sh", "-c", "exit -1"]
containers:
- name: nginx
image: nginx:1.24
- name: redis
image: redis
- kubectl describe pod my-multi-container-pod
⇒ init container 가 실행이 되지 않으므로 계속 재시작을 하고 있음
2. ReplicaSet
2-1. ReplicaSet?
- Pod 의 복제본을 생성하고 관리할 수 있는 객체
- Pod의 수량을 관리해주는 기능
- 어떤 pod를 몇 개나 생성할 것인가를 정하는 것
- Pod 의 수량을 관리 ⇒ 설정된 수량을 유지하려고 한다
2-2. ReplicaSet 설정
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.24
- replicas: 몇 개의 pod를 실행할 것인지 pod의 수량 정의
- selector: pod의 label 에 대한 selector
- template : replicaset 에 의해 만들어지는 객체의 spec을 정의
⇒ 3개로 자동 생성
번외 1 : 컨테이너 1개 삭제 시 자동 생성?
kubectl describe pod nginx-replicaset
kubectl delete pod nginx-replicaset-gq7nl
kubectl get pod
- description으로 각 컨테이너의 이름을 하나 찾기
- 하나의 컨테이너를 삭제
- 파드 상태 보기
⇒ 1개가 생성 시간이 다른 것을 확인 할 수 있다
번외 2: replicaset의 생성 개수를 늘리면 어떻게 될까?
- yaml에서 replicas의 개수를 3개에서 5개로 늘린 후 실행
⇒ 2개가 더 추가되어 생성된 것을 확인 할 수 있다
번외 3: replicaset의 생성 개수를 줄이면 어떻게 될까?
- yaml에서 replicas의 개수를 5개에서 다시 3개로 줄인 후 실행
⇒ 자동으로 2개를 삭제 하여 3개만 남은 상태
번외 4 : replicaset에서 설정한 컨테이너의 정보를 수정하면 어떻게 될까?
- yaml에서 spec.template.spec.containers.image 를 nginx:1.24 → nginx:1.19 로 수정 후 실행
⇒ kubectl get pod
실행하여 결과를 보니 새로 생성된 것이 없고, 기존의 파드들은 이전 버전 컨테이너 버전 그대로 였다
- 파드 하나를 삭제 후 yaml파일 재 실행하면 새로 생성되는 파드는 반영이 되는지 확인
kubectl describe pod nginx-replicaset
kubectl delete pod nginx-replicaset-rwvh8
kubectl get pod
⇒ 삭제를 하여서 새로 하나 생성된 상태
⇒ 새로 생성된 파드(컨테이너) 는 버전이 수정된 버전으로 생성된 것을 확인 할 수 있었다
2-3. ReplicaSet 사용 이유
위의 번외를 잘 살펴 보면 pod의 개수를 탄력적으로 조절 할 수 있다는 것을 알 수 있다 이러한 replicaset의 특징으로 서비스를 탄력적으로 운영을 할 수 있다
단, 이러한 특징을 사용하게 되면 다음과 같은 것을 고려해야 한다
- 유지 보수를 위해 서비스 업그레이드가 필요
- 유지 보수 전략을 어떻게 세울 것인가?
'BackEnd' 카테고리의 다른 글
도커와 쿠버네티스 -K8S(환경 변수) (0) | 2024.11.17 |
---|---|
도커와 쿠버네티스 -K8S (Deployment) (0) | 2024.11.14 |
도커와 쿠버네티스 - (h2+config+eureka+gateway+item) (0) | 2024.10.25 |
도커와 쿠버네티스 - (h2 + config + service server) (0) | 2024.10.20 |
도커와 쿠버네티스 - (h2+service server) (0) | 2024.10.17 |