Kubernetes 기본개념

Beomsun·2022년 5월 17일
0

Devops

목록 보기
1/4

쿠버네티스란?

  • 컨테이너 런타임을 통해 컨테이너를 다루는 도구
  • 도커를 관리하는 툴
  • 도커를 기반으로 컨테이너를 관리하는 서비스
  • 여러 개의 컨테이너를 서비스 단위로 관리하는 데 최적화

도커와 쿠버네티스

쿠버네티스의 역할은 컨테이너를 분산 배치, 상태 관리 및 컨테이너의 구동 환경까지 관리해 주는 도구이고, 도커는 컨테이너를 다루는 도구(컨테이너 런타임) 중 하나입니다. 쿠버네티스는 컨테이너를 다루기 위해 도커 이외에도 다양한 컨테이너 런타임 소프트웨어를 사용할 수 있습니다.

  • 컨테이너를 하나만 띄워서 사용해야지! => 도커

  • 0월 0시에, 100개의 컨테이너를 자동으로 생성해야지! => 쿠버네티스

쿠버네티스 클러스터

작동 중인 쿠버네티스 배포를 클러스터라고 한다. 버네티스 클러스터는 컨트롤 플레인과 컴퓨팅 머신(또는 노드)의 2개 부분으로 시각화할 수 있습니다.

각 노드는 자체 Linux® 환경이며 물리 또는 가상 머신일 수 있습니다. 각 노드는 컨테이너로 이루어진 포드(Pod)를 실행합니다.

쿠버네티스 컴포넌트

쿠버네티스를 배포하면 클러스터를 얻는다.

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합. 모든 클러스터는 최소 한 개의 워커 노드를 가진다

워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인(컨테이너의 라이플 사이클을 정의, 배포, 관리하기 위한 API와 인터페이스들을 노출하는 컨테이너 오케스트레이션 레이어)이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다.

쿠버네티스 오브젝트

쿠버네티스 오브젝트 는 쿠버네티스 시스템에서 영속성을 가지는 오브젝트이다. 쿠버네티스는 클러스터의 상태를 나타내기 위해 이 오브젝트를 이용한다.

  어떤 컨테이너화된 애플리케이션이 동작 중인지 (그리고 어느 노드에서 동작 중인지)
  그 애플리케이션이 이용할 수 있는 리소스
  그 애플리케이션이 어떻게 재구동 정책, 업그레이드, 그리고 내고장성과 같은 것에 동작해야 하는지에 대한 정책

오브젝트에 대한 자세한 내용은 따로 정리할 예정이다.

쿠버네티스 노드

쿠버네티스는 컨테이너를 파드(클러스터에서 실행 중인 컨테이너의 집합을 나타낸다.)내에 배치하고 노드 에서 실행함으로 워크로드를 구동한다. 노드는 클러스터에 따라 가상 또는 물리적 머신일 수 있다. 각 노드는 컨트롤 플레인에 의해 관리되며 파드를 실행하는 데 필요한 서비스를 포함한다.

일반적으로 클러스터에는 여러 개의 노드가 있으며, 학습 또는 리소스가 제한되는 환경에서는 하나만 있을 수도 있다. GCP를 통해 쿠버네티스 단일노드를 구성해 보았다.

노드의 컴포넌트에는 kubelet(클러스터의 각 노드에서 실행되는 에이전트), 컨테이너 런타임(컨테이너 실행을 담당하는 소프트웨어) 그리고 kube-proxy(클러스터의 각 노드에서 실행되는 네트워크 프록시)가 포함된다.

파드는 노드에서 실행하도록 예약되고 오케스트레이션됩니다. 클러스터의 용량을 확장해야 한다면 노드를 더 추가하면 됩니다. 파드는 쿠버네티스 오브젝트 모델에서 가장 작고 단순한 유닛으로, 애플리케이션의 단일 인스턴스를 나타냅니다. 각 파드는 컨테이너 실행 방식을 제어하는 옵션과 함께 컨테이너 하나 또는 긴밀히 결합된 일련의 컨테이너로 구성되어 있습니다. 포드를 퍼시스턴트 스토리지에 연결하여 스테이트풀(stateful) 애플리케이션을 실행할 수 있습니다.

파드

파드(Pod) 는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이며 하나 이상의 컨테이너의 그룹이다. 이 그룹은 스토리지 및 네트워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 갖는다. 파드의 콘텐츠는 항상 함께 배치되고, 함께 스케줄되며, 공유 콘텍스트에서 실행된다.

EX) nginx:1.14.2 이미지를 실행하는 컨테이너로 구성되는 파드의 예시

    //nginx-pod.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
    //실행(해당 yaml이 위치하는 폴더에서 명령어 작성)
    kubectl apply -f nginx-pod.yaml

참고

0개의 댓글