📚FOS Study
홈카테고리
홈카테고리
📚FOS Study

개발 학습 기록을 정리하는 블로그입니다.

바로가기

  • 홈
  • 카테고리

소셜

  • GitHub
  • Source Repository

© 2025 FOS Study. Built with Next.js & Tailwind CSS

목록으로 돌아가기
🚀devops/ k8s-in-action

3장. 파드 : 쿠버네티스에서 컨테이너 실행

약 3분
GitHub에서 보기

3장. 파드 : 쿠버네티스에서 컨테이너 실행

3.1. 파드란?

  • 파드는 함께 배치된 컨테이너 그룹이며 쿠버네티스의 기본 빌딩 블록이다.
    • 컨테이너를 개별적으로 배포하기보다는 컨테이너를 가진 파드를 배포한다.
    • 일반적으로 파드는 하나의 컨테이너만 포함한다.
    • 파드가 여러 컨테이너를 가지고 있을 경우에, 모든 컨테이너는 항상 하나의 워커 노드에서 실행되며, 여러 워커 노드에 걸쳐 실행되지 않는다.

3.1.1. 왜 파드가 필요한가?

  • 컨테이너는 단일 프로세스를 실행하는 것을 목적으로 설계했다.
  • 각 프로세스를 자체의 개별 컨테이너로 실행해야 한다. 이것이 도커와 쿠버네티스를 사용하는 방법이다.

3.1.2. 파드 이해하기

  • 여러 프로세스를 단일 컨테이너로 묶지 않기 때문에, 컨테이너를 함께 묶고 하나의 단위로 관리할 수 있는 구조가 필요하다. 이게 파드가 필요한 이유이다.
  • 그룹 안에 있는 컨테이너가 특정한 리소스를 공유하기 위해 각 컨테이너가 완벽하게 격리되지 않도록 한다.
  • 쿠버네티스는 파드 안에 있는 모든 컨테이너가 자체 네임스페이스가 아닌 동일한 리눅스 네임스페이스를 공유하도록 도커를 설정한다.
  • 파드의 모든 컨테이너는 동일한 네트워크 네임스페이스와 UTS 네임스페이스 안에서 실행되기 때문에, 모든 컨테이너는 같은 호스트 이름과 네트워크 인터페이스를 공유한다.

컨테이너가 동일한 IP와 포트 공간을 공유하는 방법

  • 파드 안의 컨테이너는 동일한 IP 주소와 포트 공간을 공유한다.
  • 이는 동일한 파드 안 컨테이너에서 실행 중인 프로세스가 같은 포트 번호를 사용하지 않도록 주의해야 함을 의미한다.
  • 다른 파드에 있는 컨테이너는 서로 다른 포트 공간을 갖기 떄문에 포트 충돌이 일어나지 않는다.
  • 파드 안에 있는 모든 컨테이너는 동일한 루프백 네트워크 인터페이스를 갖기 때문에, 컨테이너들이 로컬호스트를 통해 서로 통신할 수 있다.

파드 간 플랫 네트워크 소개

  • 쿠버네티스 클러스터의 모든 파드는 하나의 플랫한 공유 네트워크 주소 공간에 상주한다.
  • 모든 파드는 다른 파드의 IP 주소를 사용해 접근하는 것이 가능하다. 둘 사이에는 어떠한 NAT(Network Address Translation)도 존재하지 않는다.
  • 이것은 실제 노드 간 네트워크 토폴로지에 관계없이, 근거리 네트워크에 있는 컴퓨터 간의 통신과 비슷하다.

3.1.3 파드에서 컨테이너의 적절한 구성

  • 각 파드에는 밀접하게 관련 있는 구성 요소나 프로세스만 포함해야 한다.

  • 프론트엔드 서버와 백엔드 서버를 같은 파드에 두어야 하는가?
    • 둘은 항상 같은 노드에서 실행된다.
    • 만약에 두 노드를 가진 쿠버네티스 클러스터가 있고 이 파드 하나만 있다면, 워커 노드 하나만 사용하고 두 번째 노드에서 이용할 수 있는 컴퓨팅 리소스를 활용하지 않게 된다.
    • 파드를 두 개로 분리하면 쿠버네티스가 프론트엔드를 한 노드 그리고 백엔드는 다른 노드에 스케줄링 해 인프라의 활용도를 향상시킬 수 있다.

  • 쿠버네티스는 개별 컨테이너를 수평으로 확장할 수 없다. 대신 전체 파드를 수평으로 확장한다.
  • 일반적으로 프론트엔드 구성 요소는 백엔드와 완전히 다른 스케일링 요구 사항을 갖고 있어 개별적으로 확장하는 경향이 있다.
  • 그러므로 프론트엔드 파드와 백엔드 파드를 나누는 것이 바람직할 것 이다.

파드에서 여러 컨테이너를 사용하는 경우

  • 하나의 주요 프로세스와 하나 이상의 보완 프로세스로 구성된 경우
  • 예시: 주 컨테이너가 특정 디렉터리에서 파일을 제공하는 웹 서버
    • 추가 컨테이너 : 외부 소스에서 주기적으로 콘텐츠를 받아 웹 서버의 디렉터리에 저장

파드에서 여러 컨테이너를 사용하는 경우 결정

  • 컨테이너를 함께 실행해야 하는가? 혹은 서로 다른 호스트에서 실행할 수 있는가?
  • 여러 컨테이너가 모여 하나의 구성 요소를 나타내는가? 혹은 개별적인 구성 요소인가?
  • 컨테이너가 함께 스케줄링 되어야 하는가? 혹은 개별적으로 스케줄링 되어야 하는가?

3.2. YAML 또는 JSON 디스크립터로 파드 설정

devops 카테고리의 다른 글 보기수정 제안하기
목차
  • 3장. 파드 : 쿠버네티스에서 컨테이너 실행
  • 3.1. 파드란?
  • 3.1.1. 왜 파드가 필요한가?
  • 3.1.2. 파드 이해하기
  • 컨테이너가 동일한 IP와 포트 공간을 공유하는 방법
  • 파드 간 플랫 네트워크 소개
  • 3.1.3 파드에서 컨테이너의 적절한 구성
  • 파드에서 여러 컨테이너를 사용하는 경우
  • 파드에서 여러 컨테이너를 사용하는 경우 결정
  • 3.2. YAML 또는 JSON 디스크립터로 파드 설정