GCP Cloud Engineer - 66

2024-04-19

  • Cloud
  • GCP
  • Kubernetes

Google Kubernetes Engine(GKE) 객체 관리 및 Kubernetes Object Management

YAML 파일을 통한 오브젝트 정의

  • manifest files는 Kubernetes에서 생성하고 유지할 객체를 정의하며, 주로 YAML 또는 JSON 형식으로 작성됨.

  • YAML은 사람이 읽기 쉽고 편집 과정이 적은 편리한 형식이므로 주로 사용됨.

  • ㅁ 매니페스트 파일에는 객체의 원하는 상태, 구성 요소, 리소스, 실행할 컨테이너 등의 정보가 포함됨.

Manifest 파일 필수 필드

  • apiVersion: 객체를 생성하는 데 사용되는 Kubernetes API 버전을 설명.

  • kind: 객체 유형을 정의하며, 예를 들어 Pod, Deployment 등을 포함.

  • metadata: 객체의 이름, 고유 ID, 선택적 네임스페이스 등을 포함.

  • spec: 포드의 컨테이너 이미지를 정의하는 필드

오브젝트의 고유 식별자 및 라벨

  • ㅁ 모든 Kubernetes 객체는 고유한 ID(UID)를 가지며, 동일 클러스터 내에서는 중복(X)되지 않음.

  • ㅁ 이름에는 영숫자, 하이픈, 마침표 등을 포함할 수 있으며 최대 길이는 253자임.

  • ㅁ 라벨은 key-value 쌍으로 객체에 태그를 부여하고, 객체를 식별 및 구성하는 데 사용됨.

  • ㅁ 라벨을 사용하여 특정 라벨을 기준으로 리소스를 선택하거나, 라벨 없는 객체를 선택하는 등 표현력을 높일 수 있음.

배포(Deployment) 및 컨트롤러

  • ㅁ 배포 객체는 웹 서버와 같은 수명이 긴 소프트웨어 구성 요소를 관리함. (수명관리 / 포드의 원하는 상태유지 / 포드의 수평 확장과 고가용성 관리)

  • ㅁ 배포 컨트롤러는 포드의 원하는 상태를 모니터링하고, 실패한 포드를 자동으로 복구함.

  • ㅁ 배포는 단일 YAML 파일을 통해 여러 포드의 복제본을 관리하며, 포드의 수평 확장과 고가용성을 유지관리함.

네임스페이스(Namespace)

  • ㅁ 네임스페이스는 물리적 클러스터를 여러 가상 클러스터로 추상화함.

  • ㅁ 각 네임스페이스는 고유한 이름 범위를 가지며, 동일 네임스페이스 내에서는 객체 이름이 중복(X)될 수 없음.

  • ㅁ 리소스 생성 시 명령줄 플래그나 YAML 파일에서 네임스페이스를 지정할 수 있음.

  • ㅁ 기본 네임스페이스로는 default, kube-system, kube-public이 존재하며, 네임스페이스를 통해 리소스 할당량을 정의할 수 있음.

포드(Pods) 및 리소스 할당

  • ㅁ 포드는 Kubernetes에서 기본 실행 단위로, 컨테이너를 포함함.

  • ㅁ 포드는 상태를 스스로 유지하지 않으며, 컨트롤러 객체가 관리 및 복구를 담당함.

  • ㅁ 리소스 할당량은 네임스페이스 내에서 리소스 소비에 대한 제한을 정의하며, Pod를 스케줄링할 때 컨테이너가 충분한 리소스를 확보하도록 보장함.

네임스페이스 및 라벨 관리

  • ㅁ 클러스터에서 각 프로젝트 또는 팀의 작업을 정리하고 구성하기 위해 네임스페이스와 라벨을 활용함.

  • 네임스페이스여러 프로젝트를 한 클러스터 내에서 분리하여 관리하는 데 사용되며, 라벨은 키-값 쌍으로 객체를 식별하고 조직화하는 데 활용됨.

  • ㅁ 리소스 생성 시 명령줄 수준에서 네임스페이스를 적용하면 YAML 파일의 유연성을 높여 다양한 인스턴스를 독립적으로 만들 수 있음.


모르는 단어

Node vs Pod

쿠버네티스에서 노드와 포드는 서로 다른 개념입니다.

노드(Node):

노드는 쿠버네티스 클러스터에서 워커 머신을 의미하며, 이는 VM 또는 물리적인 서버일 수 있습니다.

각 노드는 쿠버네티스 클러스터의 일부이며, 포드를 실행하는 데 필요한 서비스를 실행합니다.

노드는 쿠버네티스 마스터에 의해 관리되며, 마스터는 노드에 포드를 스케줄링하고, 노드의 상태를 모니터링합니다.

포드(Pod):

포드는 쿠버네티스에서 배포 가능한 가장 작은 단위입니다.

포드는 하나 이상의 컨테이너를 포함하며, 이 컨테이너들은 같은 노드에서 실행되고, 같은 네트워크 네임스페이스와 IPC 네임스페이스를 공유합니다.

이렇게 포드 내의 컨테이너들은 밀접하게 연관되어 있으며, 같은 노드에서 함께 스케줄링되고 실행됩니다.

따라서, 노드는 쿠버네티스 클러스터에서 워커 머신을 의미하며, 포드는 이 노드에서 실행되는 컨테이너 그룹을 의미합니다.

노드는 포드보다 더 큰 개념입니다.

노드는 쿠버네티스 클러스터의 워커 머신을 의미하며, 포드는 이 노드에서 실행되는 컨테이너 그룹을 의미합니다.

즉, 하나의 노드는 여러 개의 포드를 실행할 수 있습니다.

GCP Cloud ...

GCP Cloud ...