Study/K8S
Multi-Container PODs
monitor
2023. 3. 26. 17:02
k8s에는 다양한 타입의 멀티 컨테이너 포드 방식이 존재합니다 Ambassador, Adapter, Sidecar
Pod에 각각 페어 형태로 기능이 달라도 같이 공용으로 움직이는 Pod가 필요하다면 MultiContainer Pod가 필요합니다.
종속성을 가지는 포드들 끼리 묶어 줄 수 있어야 하죠.
Create
pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: data-processor
image: data-processor
ports:
- containerPort: 8080
- name: log-agent
image: log-agent
Design Patterns
1. Sidecar Pattern
- 사이드 카 패턴의 좋은 예는 로깅 서비스와 WAS 서비스를 함께하는 경우이다. logging 서비스가 중앙 로깅 서버로 요청을 보낼때의 행위이다.
2. Adapter Pattern
- 어뎁터 컨테이너의 경우 로깅 서비스를 보낼때 다양한 형태로 로깅 데이터를 중앙 로깅 서버로 보내게 된다. 이 때, 이를 하나의 형태로 만들어주기 위해서 어뎁터를 붙여서 보내면 한 형태의 로깅 데이터를 사용 할 수 있다.
3. Ambassador
- Dev용 Test용 Prod등을 나눠서 보내는 형태를 생각하면 된다.
Tip : k replace --force -f <editor.yaml> #replace될 yaml이 알아서 pod를 내리고 올려준다.
init Container
initContainer는 포드가 처음 한 번 실행 될 때만 실행되는 컨텐츠를 실행 하기 위한 컨테이너입니다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', 'git clone <some-repository-that-will-be-used-by-application> ;']