본문 바로가기
INFRA/DevOps

[K8S] Multi Container

by BTC_민물공원 2023. 9. 13.

베하~! BTC_녹차공원 팀의 민물공원 입니다.

이번주는 Multi Container에 대해 알아보겠습니다!

 

Multi Container


하나의 Pod 안에는 여러개의 Container가 들어있을 수 있습니다. 단, Pod 내의 Container 들이 서로 다른 종류일때만 가능합니다.

Pod 내에 Container 들은 동일한 네트워크 공간을 공유하기 때문에 서로 간의 통신이 가능하고 저장 공간을 공유하는 것도 간단합니다. Multi Container에는 3가지 종류가 있습니다.

  • Sidcar Pattern : Main Container의 기능 확장 또는 향상
                              ex) Log Saving Sidecar
  • Ambassador : Main Container의 네트워크 기능 담당
                           ex) Proxy Container
  • Adapter : Main Container의 출력 변환
                    ex) Monitoring Adapter

Pod 내부에서 하나의 Container는 하나의 기능만을 가져야 하며, Main Container를 제외한 다른 Container들이 어떤 목적을 가지고 동작하느냐에 따라 디자인 패턴 이름이 달라집니다.

 

 

Multi Container 실습


이번 실습도 Killercoda 에서 따라해보아요.

https://killercoda.com/

 

Killercoda Interactive Environments

Learn DevOps Linux Kubernetes CKS CKA CKAD Git Cassandra etc | Katacoda compatible

killercoda.com

 

nginx 컨테이너에 consul 컨테이너를 추가해보는 실습을 진행해볼거예요.

먼저 nginx pod 생성을 위한 yaml 파일을 작성합니다.

kubectl run nginxconsul --image=nginx --dry-run=client -o yaml > pod.yaml

 

생성된 yaml 파일을 수정하여 consul 컨테이너를 추가합니다.

vi pod.yaml

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginxconsul
  name: nginxconsul
spec:
  containers:
  - image: nginx
    name: nginx
  - image: consul
    name: consul
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

nginx와 consul 컨테이너가 포함된 pod를 생성합니다.

kubectl apply -f pod.yaml

 

생성 후 pod 상태를 확인합니다.

kubectl get pods -o wide

 

 

이렇게 오늘은 Multi Container 에 대해 알아보았는데요.

다음번에는 더 흥미로운 주제로 찾아뵙겠습니다.

 

이상 BTC_녹차공원 팀이였습니다!

베빠~!

'INFRA > DevOps' 카테고리의 다른 글

[Git] Github Action  (0) 2023.09.18
[DevOps] Jenkins Git 연동  (0) 2023.09.15
[K8S] Taint  (0) 2023.09.06
Git Branch의 개념과 활용  (0) 2023.09.01
[DevOps]EC2 Ubuntu에 Jenkins 설치  (0) 2023.08.30

댓글