개발강의정리/DevOps

[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 한 포드에 멀티 컨테이너

nineDeveloper 2021. 1. 19.
728x90

한 포드에 멀티 컨테이너


하나의 포드에 다수의 컨테이너를 사용

  • 하나의 포드를 사용하는 경우 같은 네트워크 인터페이스와 IPC, 볼륨 등을 공유
  • 이 포드는 효율적으로 통신하여 데이터의 지역성을 보장하고 여러 개의 응용프로그램이 결합된 형태로 하나의 포드를 구성할 수 있음
$ kubectl exec -it two-containers -- cat /usr/share/nginx/html/index.html
Defaulting container name to nginx- container.
Use 'kubectl describe pod/two-containers - n default' to see all of the containers in this pod.
Hello from the debian container

pod-multi-container.yaml

apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:
  restartPolicy: Never
  volumes:
  - name: shared-data
    emptyDir: {}
  containers:
  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html
  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

연습문제

  • 하나의 포드에서 nginx와 redis 이미지를 모두 실행하는 yaml을 만들고 실행하라

nginx-redis-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-redis-pod
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
  - name: redis
    image: redis

포트가 겹치면 에러가 나므로 각각 다른 포트로 구동되도록 설정

kubectl로 생성 및 확인

$ kubectl create -f nginx-redis-pod.yaml
pod/nginx-redis-pod created

$ kubectl get pod -w
NAME              READY   STATUS              RESTARTS   AGE
nginx-redis-pod   0/2     ContainerCreating   0          6s
nginx-redis-pod   2/2     Running             0          15s

$ kubectl get pod -o wide
NAME              READY   STATUS    RESTARTS   AGE    IP          NODE    NOMINATED NODE   READINESS GATES
nginx-redis-pod   2/2     Running   0          5m3s   10.46.0.1   work2   <none>           <none>

work2에서 구동중이므로 work2에서 프로세스 확인
redis와 nginx 가 인터페이스를 공유하는 형태로 돌아가고 있는 것을 확인

# 젼체 명령어 보기
$ docker ps -a --no-trunc

$ docker ps | grep "nginx"
34d8be4e4fcc   redis                  "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes             k8s_redis_nginx-redis-pod_default_97205021-23d9-474e-a75b-4102042f33c6_0
d4343ded0883   nginx                  "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes             k8s_nginx_nginx-redis-pod_default_97205021-23d9-474e-a75b-4102042f33c6_0
110dae479c60   k8s.gcr.io/pause:3.2   "/pause"                 7 minutes ago   Up 7 minutes             k8s_POD_nginx-redis-pod_default_97205021-23d9-474e-a75b-4102042f33c6_0
728x90

댓글

💲 추천 글