이 문서에서는 오픈소스 컨테이너 오케스트레이션 플랫폼 Kubernetes의 기본 사항을 설명합니다. Google Distributed Cloud (GDC) 에어 갭의 많은 구성요소는 Kubernetes를 기반으로 하며, 많은 문서에서는 사용자가 기본 Kubernetes 개념과 용어에 이미 익숙하다고 가정합니다. Kubernetes에 익숙하지 않다면 이 문서를 시작하는 데 도움이 되는 권장 자료의 참고 자료로 사용하세요.
Kubernetes 기본사항을 학습하는 것은 GDC 애플리케이션과 기본 시스템 구성요소를 설계, 배포, 관리하는 데 필수적입니다. 다음 기술 전문가는 GDC를 성공적으로 운영하기 위해 Kubernetes를 이해해야 합니다.
- 기본 GDC 소프트웨어 및 하드웨어 인프라를 설치하고 유지관리하는 인프라 운영자 그룹 내 운영자
- GDC에서 복원력 있는 인프라 및 애플리케이션 아키텍처를 설계하는 플랫폼 관리자 그룹 내 관리자
- 애플리케이션 빌드를 담당하는 애플리케이션 운영자 그룹 내 개발자
자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.
Kubernetes 정보
Kubernetes는 오픈소스 컨테이너 조정 플랫폼입니다. 기본적으로 Kubernetes 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 작업자 머신 집합입니다. 전체 클러스터는 API 서버, 스케줄러, etcd 데이터베이스와 같은 구성요소를 포함하고 클러스터 상태를 유지하는 역할을 하는 컨트롤 플레인에 의해 관리됩니다.
애플리케이션은 Kubernetes에서 배포 가능한 최소 단위인 포드로 패키징되며, 포드는 하나 이상의 컨테이너를 포함하고 노드에서 실행될 수 있습니다. 클러스터 내에서 리소스를 정리하기 위해(종종 서로 다른 팀이나 환경의 경우) Kubernetes는 네임스페이스를 사용합니다.
포드의 수명 주기와 상태는 컨트롤러에 의해 관리됩니다. 예를 들어 Deployment 객체는 순차적 업데이트를 관리하고 ReplicaSet 객체는 특정 수의 포드 복제본이 실행되도록 합니다. 포드에 액세스하기 위한 IP 주소 및 DNS 이름과 같은 안정적인 네트워크 엔드포인트를 제공하기 위해 Kubernetes는 서비스를 사용합니다.
컨테이너 스토리지는 기본적으로 임시이므로 Kubernetes는 데이터를 관리하기 위해 볼륨 및 영구 볼륨과 같은 다양한 스토리지 추상화를 제공합니다.
클러스터 리소스 및 Kubernetes API에 대한 액세스를 보호하기 위해 Kubernetes는 역할 기반 액세스 제어 (RBAC)를 사용하여 역할, 클러스터 역할, 바인딩을 정의하여 사용자 및 서비스 계정에 특정 권한을 부여합니다.
주요 개념
다음은 GDC 문서 전반에서 자주 사용되는 주요 개념들입니다. 이 목록에 모든 Kubernetes 개념이 포함되어 있는 것은 아닙니다. Kubernetes 문서 및 추천 자료에서 제공되는 주제를 통해 더 많은 내용을 읽고 살펴볼 수 있습니다.
노드 및 클러스터
모든 Kubernetes 워크로드는 노드에서 실행됩니다. GDC에서 노드는 가상 머신 (VM)입니다. 다른 Kubernetes 플랫폼에서 노드는 물리적 또는 가상 머신일 수 있습니다. 각 노드는 Kubernetes 컨트롤 플레인에서 관리되며 포드를 실행하는 데 필요한 모든 구성요소를 포함합니다. 클러스터는 컨테이너화된 애플리케이션을 배포하는 단일 항목으로 함께 처리할 수 있는 노드 집합입니다.
Kubernetes 문서에서 자세히 알아보세요.
Kubernetes 컨트롤 플레인
Kubernetes 컨트롤 플레인은 kubectl CLI 및 기타 도구를 사용하여 클러스터 및 애플리케이션과 상호작용할 수 있는 Kubernetes API 서버, 사용 가능한 노드에 포드를 예약하는 스케줄러, 클러스터 상태를 추적하고 관리하는 컨트롤러를 비롯한 클러스터의 전체 상태를 관리하는 시스템 구성요소 집합입니다. 컨트롤 플레인은 GDC에서 제공하고 관리합니다.
자세한 내용은 Kubernetes 컨트롤 플레인 구성요소 문서를 참고하세요.
포드
Kubernetes에서 컨테이너화된 애플리케이션은 포드 내에서 실행됩니다. 포드는 Kubernetes에서 만들고 관리할 수 있는 배포 가능한 최소 컴퓨팅 단위입니다. 포드에는 하나 이상의 컨테이너가 포함되어 있습니다. 포드가 애플리케이션 서버 및 프록시 서버와 같은 여러 컨테이너를 실행할 때 컨테이너는 단일 항목으로 관리되며 포드의 리소스를 공유합니다.
Kubernetes 문서에서 자세히 알아보세요.
네임스페이스
Kubernetes 네임스페이스는 클러스터 내에서 포드 및 서비스와 같은 리소스를 추가로 그룹화하고 선택하는 메커니즘을 제공합니다. 예를 들어 여러 애플리케이션 팀이 단일 클러스터에서 워크로드를 실행하는 경우와 같습니다.
자세한 내용은 Kubernetes 네임스페이스 문서를 참고하세요.
컨트롤러
Kubernetes 컨트롤러는 "각 포드에서 이 컨테이너를 사용하여 이 클러스터에서 이 포드를 3개 실행하도록 지정"하는 경우와 같이 사용자가 지정한 상태에 따라 클러스터 및 워크로드 상태를 추적 및 관리합니다. 각 컨트롤러는 다음을 비롯하여 서로 다른 Kubernetes 리소스 유형을 추적합니다.
Kubernetes 컨트롤러는 사용자가 지정한 상태에 따라 클러스터 및 워크로드 상태를 추적 및 관리합니다. 예를 들어 클러스터가 포드 3개를 실행하도록 동작을 설정하고 각 포드에 지정된 컨테이너를 포함할 수 있습니다. 각 컨트롤러는 다음을 비롯하여 서로 다른 Kubernetes 리소스 유형을 추적합니다.
- 배포:
Deployment커스텀 리소스는 복제본이라고 부르는 하나 이상의 동일한 포드를 나타내는 Kubernetes 객체입니다. 배포는 클러스터 노드 간에 분산된 포드의 여러 복제본을 실행합니다. 배포는 실패하거나 응답하지 않는 포드를 자동으로 교체합니다. - StatefulSet:
StatefulSet커스텀 리소스는 배포와 비슷하지만 각 포드에 대해 영구적인 고유 ID를 유지합니다.StatefulSet리소스는 스테이트풀(Stateful) 애플리케이션과 같이 영구 상태를 갖는 애플리케이션에서 유용할 수 있습니다. - DaemonSet:
DaemonSet커스텀 리소스를 사용하면 일부 또는 전체 노드에 기본 포드를 추가할 수 있습니다. 이러한 서비스는 로그 수집 데몬 또는 모니터링 데몬과 같은 워크로드에 대한 도우미 서비스인 경우가 많습니다. - ReplicaSet:
ReplicaSet커스텀 리소스는 동일한 포드 집합입니다.ReplicaSet은 일반적으로Deployment리소스의 일부로 관리됩니다.
Kubernetes 문서에서 자세히 알아보세요.
Kubernetes 서비스
기본적으로 포드가 실행 중인 클러스터 노드를 제어할 수 없으므로 포드에 안정적인 IP 주소가 포함되지 않습니다. Kubernetes에서 실행되는 애플리케이션의 IP 주소를 가져오려면 Kubernetes 서비스라는 포드 외에도 네트워킹 추상화를 정의해야 합니다.
Kubernetes 서비스는 포드 집합에 안정적인 네트워킹 엔드포인트를 제공합니다.
여기에는 클러스터 외부에서 애플리케이션에 도달할 수 있도록 외부 IP 주소를 제공하는 LoadBalancer 서비스를 포함하여 여러 유형의 서비스가 있습니다.
Kubernetes에는 또한 DNS 이름(예: helloserver.default.cluster.local)을 서비스에 할당하는 내부 주소 확인을 위한 기본 제공되는 DNS 시스템이 포함됩니다.
따라서 클러스터 내의 포드가 안정적인 주소를 사용하여 클러스터의 다른 포드에 도달할 수 있습니다. 이 DNS 이름은 gdcloud CLI에서와 같이 클러스터 외부에서 사용할 수 없습니다.
자세한 내용은 Kubernetes 서비스 문서를 참고하세요.
스토리지
애플리케이션이 스테이트풀(Stateful) 애플리케이션과 같이 포드 수명을 넘어서 존재하는 데이터를 저장해야 하는 경우 Kubernetes PersistentVolume 객체를 사용하여 이 스토리지를 프로비저닝할 수 있습니다. 상응하는 포드가 종료될 때 삭제되는 임시 스토리지를 사용하도록 선택할 수도 있습니다.
Kubernetes 문서에서 자세히 알아보세요.
역할 기반 액세스 제어
Kubernetes에는 클러스터 및 리소스 액세스를 위한 승인 정책을 만들 수 있게 해주는 역할 기반 액세스 제어(RBAC) 메커니즘이 포함되어 있습니다. GDC를 사용할 때는 애플리케이션 보안을 위해 Kubernetes RBAC와 GDC의 Identity and Access Management (IAM)를 조합해서 사용하는 경우가 많습니다.
자세한 내용은 Kubernetes 역할 기반 액세스 제어 문서를 참고하세요.
추천 도움말
이 섹션에서는 Kubernetes에 대해 자세히 알아보기 위한 추천 리소스 링크를 제공합니다. 특히 공식 Kubernetes 웹사이트인 Kubernetes.io에는 Kubernetes에 관한 모든 것에 대해 신뢰할 수 있는 다양한 자료가 포함되어 있습니다.
외부 가이드 및 튜토리얼
- Kubernetes 개요: Kubernetes에 대한 완전한 개념 개요입니다.
- 튜토리얼: Kubernetes 기본사항 알아보기: 예시를 통해 Kubernetes 기본사항을 알아봅니다.
- Kubernetes 튜토리얼: 기본 범위를 지나서 학습을 심화하려면 이 Kubernetes 문서 섹션에서 제공되는 튜토리얼을 통해 스테이트풀(Stateful) 애플리케이션부터 보안까지 다양한 주제를 살펴볼 수 있습니다.
참조 문서
- Kubernetes 용어집: 포괄적이고 표준화된 Kubernetes 용어 목록입니다. Kubernetes 용어의 의미가 확실하지 않으면 용어집을 참조하세요.