본문 바로가기

컨테이너/Kubernetes

[쿠버네티스] (3) Pod와 내부 컨테이너들의 이해

 작성한 YAML 파일을 통해 쿠버네티스에 새로운 포드를 생성합니다.

 

$ kubectl apply -f nginx-pod.yaml

 

 describe 명령어를 통해서 생성된 리소스의 자세한 정보를 얻어올 수 있습니다.

 

 이 명령어로 Pod의 IP를 확인해 보겠습니다.

 

이 IP는 외부에서 접근할수 없으며, 클러스터 내부에서만 접근 할 수 있습니다.

 

쿠버네티스 외부 또는 내부에서 포드에 접근하려면 서비스(service)라고 하는 쿠버네티스 오브젝트를 따로 생성해야

 

하지만, 클러스터의 노드 중 하나에 접속하여 HTTP 요청을 전송할 경우, 정상적으로 실행 됩니다.

 

 

 

[nginx-pod-with-ubuntu.yaml]

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"]

 

포드는 여러개의 컨테이너로 구성될 수 있습니다.

 

-리눅스 네임스페이스를 공유

 

-여러 컨테이너들을 추상화된 집합으로 사용

 

-네트워크 네임스페이스를 공유함으로 동일한 네트워크 환경을 가지게 됨

 

 

 

하나의 Pod에는 하나의 컨테이너만 존재하는것이 바람직한데, 보통 여러개의 컨테이너가 존재하는것을 보면,

 

그 이유는 설정 파일의 변경사항을 갱신해주는 설정 리로더(reloader) 프로세스나 로그를 수집해주는 프로세스 같은

 

부가적인 기능을 사용할 경우 같은 워커 노드에서 함께 실행된다.