ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pod
    K8s 2025. 7. 10. 14:23

    포드(pod) : 컨테이너를 다루는 기본 단위
    쿠버네티스에서 컨테이너 애플리케이션의 기본 단위. 포드는 1개 이상의 컨테이너로 구성된 컨테이너의 집합이다.

     

    쿠버네티스가 포드를 사용하는 이유는 컨테이너 런타임의 인터페이스 제공 등 여러가지가 있지만 여러 리눅스 네임스페이스(namespace)를 공유하는 여러 컨테이너들을 추상화된 집합으로 사용하기 위해서이다.
    포드 내 컨테이너들이 네트워크 네임스페이스 등과 같은 리눅스 네임스페이스를 공유해 사용한다.

     

    * 네트워크 네임스페이스는 컨테이너의 고유한 네트워크 환경을 제공해주는 역할을 담당한다. 
    예를 들어 docker run 명령어로 docker0 브리지에 연결된 컨테이너가 생성됐다면, 그 컨테이너는 자기 자신만의 고유한 네트워크 네임스페이스를 가지게 된다. 그렇기 때문에 호스트 및 다른 컨테이너와 다른 고유한 IP를 유지할 수 있는 것이다.

     

    컨테이너 네트워크 타입은 네트워크 네임스페이스를 컨테이너 간에 공유해 사용할 수 있도록 설정하기 때문에 여러개의 컨테이너가 동일한 네트워크 환경을 가지게 된다. 포드 내부 컨테이너들은 네트워크 네임스페이스 등과 같은 리눅스 네임스페이스를 공유해 사용한다. Pod 간은 서로 다른 네임스페이스. Pod 내부는 네임스페이스 공유.

     

    동일한 포드의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이된다는 특징이 있다.
    포드 안의 여러 컨테이너에서 가상 NIC(프라이빗 IP)를 공유하는 구성을 취하기 때문에 컨테이너끼리 localhost를 경유하여 통신할 수 있다. 디렉토리도 공유할 수 있다.


    포드에 정의된 부가적인 컨테이너를 사이드카 컨테이너라고 부르며, 사이드카 컨테이너는 포드 내의 다른 컨테이너와 네트워크 환경을 공유하게 된다. 그렇기 때문에 포드에 포함된 컨테이너들은 모두 같은 워커 노드에서 함께 실행된다. 이러한 구조 및 원리에 따라 포드에 정의된 여러 개의 컨테이너는 하나의 완전한 애플리케이션으로서 동작하게 된다. 이것이 도커와 쿠버네티스 포드의 차이점이다.

     

    kubectl run webserver --image-nginx:1.14 --port 80

    kubectl get pods -o wide

    kubectl describe pod webserver

    • elinks 설치

    • deployment 생성

     

    • pod 내부 접속

     

    • multi-container 생성하기
    • pod-multi.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: multipod
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.14
          ports:
          - containerPort: 80
        - name: centos-container
          image: centos:7
          command:
          - sleep
          - "10000"

    • 모니터링

    • multipod의 nginx-container 내부 접속

    • multi-container pod에서 container들의 pod 이름과 IP는 동일하다.

    • pod 안의 컨테이너 로그 출력
    kubectl logs multipod -c nginx-container

    • 모든 파드 삭제

    • redis123 이미지로 파드 실행

    kubectl run redis --image=redis123 --dry-run -o yaml
    kubectl run redis --image=redis123 --dry-run -o yaml > redis.yaml
    vi redis.yaml
    kubectl apply -f redis.yaml
    kubectl describe pod redis
    kubectl edit pod redis
    • 오류 원인 확인
    • kubectl describe pod redis

    • redis123 이미지 redis로 수정

    • deployment 수정
     kubectl edit deployments.apps mainui

     

    • replicas : 3 에서 5로 수정

    • deployments

     

    'K8s' 카테고리의 다른 글

    namespace  (0) 2025.07.15
    컴포넌트 종류와 구성 및 애드온  (0) 2025.07.14
    쿠버네티스 설치(kubeadm)  (2) 2025.07.08
    쿠버네티스 설치를 위한 설정 1  (0) 2025.07.08
    쿠버네티스 설치를 위한 설정 2  (0) 2025.07.04
Designed by Tistory.