[k8s] 2. 파드 - 컨테이너의 기본 단위

sightstudio

·

2020. 10. 10. 18:03

 

쿠버네티스에는 셀 수도 없을 만큼 많은 리소스 종류와 컴포넌트가 있습니다.

그중에 이번엔 제일 기초가 되는 파드에 대해 알아보도록 하겠습니다.

 

- 1. Pod(파드) 란

파드는 제일 기초적인 리소스로, 쿠버네티스 상의 컨테이너 애플리케이션의 기본 단위입니다.

파드는 1개 이상의 컨테이너로 구성된 집합입니다.

 

다음과 같이 기본적인 nginx 파드를 만들어보았습니다. 

nginx-pod.yaml 이라는 파일을 만들고 아래의 내용을 입력합니다.

apiVersion: v1
kind: Pod
metadata: 
  name: my-nginx-pod
spec:
  containers: 
  - name : my-nginx-container
    image: nginx:latest
    ports: 
      - containerPort: 80
        protocol: TCP

이후 아래의 명령어를 입력하면 pod가 생성됩니다.

kubectl apply -f nginx-pod.yaml

kubectl describe pods <파드 이름> 커맨드를 통해 파드의 상태를 볼 수 있습니다.

여기서 중요하게 봐야할 부분은 IP입니다. 

필자의 환경(docker for mac)에서는 10번대 IP로 잡히는데 이는 A Class Private IP 대역입니다.

즉 사설 IP이기 때문에  파드는 클러스터 외부에서 접근 할 수 없고, 내부에서만 접근할 수 있습니다. 

쿠버네티스  외부 또는 내부에서 pod로 잡근하려면 Service 라는 k8s 오브젝트를 따로 생성해야합니다.

 

현재로썬 방법이 없으니, 임시로 테스트용 파드를 따로 만들어 진행해보겠습니다.

# 임시 파드 생성 후 bash 셀 접속

kubectl run -i --tty --rm debug \ 
--image=alicek106/ubuntu:curl --restart=Never bash

# 이전에 만든 파드 접근 - ip는 개인 환경마다 다릅니다.
curl 10.1.0.58 

테스트용 파드를 만들어 접근해보니 nginx 초기 페이지가 응답으로 오는것을 볼 수 있습니다.

당연히 아래 클러스터 외부에서 접근

했을때는  응답을 받지 못하고 timeout이

발생한걸 알 수 있습니다.

 

 

k8s 오브젝트는 delete -f 로

삭제할 수 있습니다.

 

예시) 

kubectl delete -f nginx-pod.yaml

 

 

 

 

 

 

 

 

- k8s 파드와 도커 컨테이너

아래가 같이 파드에 사이드카 컨테이너를 추가하고 새로 갱신해줍니다.

apiVersion: v1
kind: Pod
metadata: 
  name: my-nginx-pod
spec:
  containers: 
  - name : my-nginx-container
    image: nginx:latest
    ports: 
      - containerPort: 80
        protocol: TCP
  
  - name: ubuntu-sidecar-container
    image: alicek106/rr-test:curl
    command: ["tail"]
    args: ["-f", "/dev/null"] # 컨테이너 유지

컨테이너 갱신은 아래와 같이 replace --force를 사용합니다.

kubectl replace -f nginx-pod.yaml --force

 

다음과 같이 사이드카 컨테이너 bash에 접근하고 localhost에 요청을 보내봤습니다.

kubectl exec -it my-nginx-pod -c ubuntu-sidecar-container bash

파드내 다른 nginx 컨테이너에 접근 할 수 있는것을

볼 수 있습니다.

 

이는 파드 내의 컨테이너들이 네트워크 스페이스와 같은

리눅스 네임스페이스를 공유하기 때문입니다.

 

 

 

 

 

 

 

 

 

 

www.yes24.com/Product/Goods/84927385

 

시작하세요! 도커/쿠버네티스

본서는 도커를 처음 접하는 개발자를 위한 도커 컨테이너와 이미지의 기본적인 개념을 먼저 설명한 뒤, 도커 컴포즈와 스웜 모드를 통해 컨테이너 애플리케이션을 YAML 파일로 작성하고 클러스��

www.yes24.com