확장 가능하고 안전한 Google Kubernetes Engine (GKE) 클러스터를 빌드하려면 IP 주소 지정을 효과적으로 관리해야 합니다. 이 문서에서는 GKE가 클러스터 통신에 IP 주소를 사용하는 방법, 지원되는 네트워킹 모델, 효과적인 IP 주소 관리를 위한 권장사항을 포괄적으로 설명합니다.
이 문서는 조직의 네트워크를 설계하는 클라우드 설계자 및 네트워킹 전문가를 대상으로 합니다. Google Cloud내의 일반적인 역할과 예시 태스크에 대한 자세한 내용은 일반 GKE Enterprise 사용자 역할 및 태스크를 참고하세요.
계속하기 전에 다음 개념을 숙지해야 합니다.
IP 주소로 GKE 구성요소를 연결하는 방법
GKE는 통신을 위해 각 구성요소에 고유한 IP 주소가 있어야 하는 Kubernetes 네트워킹 모델을 기반으로 합니다. 다음 섹션에서는 GKE가 핵심 클러스터 구성요소에 IP 주소를 할당하고 사용하는 방법을 설명합니다.
노드: GKE는 각 노드(Compute Engine VM 인스턴스)에 노드 풀과 연결된 서브넷의 기본 IP 주소 범위에서 내부 IP 주소를 할당합니다. 이 IP 주소를 사용하면 노드와 Kubernetes 컨트롤 플레인 간에 통신할 수 있습니다. 노드에는 아웃바운드 인터넷 액세스를 위한 외부 IP 주소가 있을 수도 있습니다.
포드: Kubernetes '포드당 IP' 모델에 따라 GKE는 노드에 할당된 포드 CIDR 범위에서 각 포드에 고유 IP 주소를 할당합니다. GKE에서 VPC 네트워크는 기본적으로 포드 IP 주소를 라우팅합니다. 이 기본 제공 라우팅 기능을 사용하면 네트워크 주소 변환 (NAT) 없이도 서로 다른 노드 간에 포드 간 직접 통신이 가능합니다. 단일 포드 내의 모든 컨테이너는 동일한 IP 주소를 공유하며
localhost를 통해 통신할 수 있습니다.서비스: GKE는 전용 보조 IP 주소 범위에서 각 Kubernetes 서비스에 안정적인 가상 IP 주소 (
ClusterIP)를 할당합니다. 이ClusterIP는 포드 그룹에 단일의 안정적인 엔드포인트를 제공합니다.ClusterIP로 트래픽을 전송하면 GKE는 해당 서비스 내의 정상 포드로 트래픽을 자동으로 부하 분산합니다.제어 영역: 비공개 클러스터에서 제어 영역은 Google 관리 테넌트 프로젝트 내에 있으며 자체 내부 IP 주소 범위를 사용합니다. 이 테넌트 프로젝트는 VPC 네트워크에 연결되어 클러스터의 VPC 네트워크에 있는 컨트롤 플레인과 노드 간에 보안 통신을 지원합니다. 이 연결은 일반적으로 Private Service Connect를 사용합니다.
부하 분산기: 애플리케이션을 인터넷 또는 VPC 네트워크 내에 노출하려면Google Cloud 부하 분산기를 사용하도록 GKE를 구성하면 됩니다. 외부 부하 분산기는 공용 IP 주소를 사용합니다. 내부 부하 분산기는 VPC 네트워크의 기본 서브넷 범위에서 내부 IP 주소를 사용합니다.
다음 표에는 GKE가 클러스터 구성요소에 IP 주소를 할당하는 방법이 요약되어 있습니다.
| 구성요소 | IP 주소 할당 방법 |
|---|---|
| 노드 | GKE는 각 노드에 내부 IP 주소를 할당합니다. GKE는 노드의 노드 풀과 연결된 서브넷의 기본 IP 주소 범위에서 이 IP 주소를 할당합니다. 이 서브넷은 클러스터의 기본 서브넷 또는 추가 서브넷일 수 있습니다. |
| 포드 | GKE는 노드에 할당된 포드 CIDR 범위에서 각 포드에 고유한 IP 주소를 할당합니다. |
| 서비스 (ClusterIP) | GKE는 클러스터의 VPC 네트워크 내 전용 보조 IP 주소 범위에서 각 서비스에 안정적인 가상 IP 주소(ClusterIP)를 할당합니다. |
| 제어 영역 | 비공개 클러스터에서 GKE 제어 영역에는 Google 관리 테넌트 프로젝트 내에 자체 내부 IP 주소 범위가 있습니다. 이 테넌트 프로젝트는 일반적으로 Private Service Connect를 사용하여 VPC 네트워크에 연결됩니다. |
| 부하 분산기 | 외부 부하 분산기는 공용 IP 주소를 사용합니다. 내부 부하 분산기는 클러스터 서브넷의 기본 IP 주소 범위에서 내부 IP 주소를 사용합니다. |
Kubernetes IP 주소 지정 및 GKE 구현
GKE를 효과적으로 사용하려면 추상 Kubernetes 네트워킹 모델과 GKE가 Google Cloud에서 이 모델을 구현하는 방식의 차이점을 이해해야 합니다.
Kubernetes IP 주소 지정 모델: 오픈소스 Kubernetes 프로젝트에서는 각 포드가 고유한 IP 주소를 수신한다고 명시합니다. 모든 포드 IP 주소는 네트워크 주소 변환 (NAT) 없이 직접 통신할 수 있습니다. 이렇게 하면 포드가 할당된 IP 주소를 사용하여 서로 연결할 수 있는 플랫 네트워크 공간이 보장됩니다.
GKE IP 주소 지정 구현: GKE는 VPC 기반 네트워킹과 통합하여 Google Cloud 에서 Kubernetes IP 주소 지정 모델을 구현합니다. 포드를 만들면 GKE가 VPC 별칭 IP 주소 범위에서 IP 주소를 할당합니다. 이렇게 하면 각 포드의 IP 주소가 전체 VPC 네트워크 내에서 기본적으로 라우팅됩니다. 이를 통해 포드 간뿐만 아니라 Compute Engine 인스턴스, Cloud SQL 데이터베이스와 같은 기타 Google Cloud 리소스와도 직접 통신할 수 있습니다. 마찬가지로 GKE는 VPC 네트워크 내에서 Kubernetes
ServiceIP 주소 (예:ClusterIP)를 관리합니다. 외부 노출을 위해LoadBalancer서비스를 만들면 GKE는Google Cloud 부하 분산기를 프로비저닝합니다. 이러한 부하 분산기는 VPC 네트워크의 공개 또는 내부 IP 주소를 사용합니다. GKE는 Google Cloud의 강력한 IP 주소 지정 및 네트워킹 인프라를 사용하여 확장 가능하고 안전한 방식으로 Kubernetes IP 기반 네트워킹 개념을 구현합니다.
GKE 네트워킹 모델: VPC 기반 클러스터
GKE는 핵심 Google Cloud 기능인 VPC 네이티브 네트워킹을 사용하여 Kubernetes 네트워킹 모델을 구현합니다.
이 모델은 별칭 IP 주소 범위를 사용합니다. VPC 기반 클러스터에서 Kubernetes는 노드의 가상 네트워크 인터페이스에 포드 IP 주소를 별칭 IP 주소 범위로 구성합니다.
이 구현은 다음과 같은 몇 가지 주요 이점을 제공합니다.
- VPC 기반 라우팅 가능: 포드 IP 주소는 VPC 네트워크 내에서 직접 라우팅할 수 있습니다. 이렇게 하면 네트워크 설계가 간소화되고 포드와 Compute Engine 인스턴스, Cloud SQL 인스턴스 등의 기타 Google Cloud 리소스 간에 지연 시간이 짧은 직접 통신이 가능해집니다.
- 경로 할당량 절약: 포드에 별칭 IP 주소를 사용하면 GKE에서 각 노드에 맞게 맞춤 정적 경로를 만들지 않습니다. 이렇게 하면 VPC 경로 할당량이 보존되므로 기존 경로 기반 클러스터에 비해 크게 개선되며 대규모 배포에 중요합니다.
- 보안 강화: VPC 네이티브 라우팅을 사용하면 VPC 네이티브 방화벽 규칙을 포드 트래픽에 직접 적용하여 네트워크 수준 보안을 강화할 수 있습니다.
VPC 기반은 모든 GKE 클러스터에 권장되는 기본 네트워킹 모드입니다.
효과적인 IP 주소 관리가 중요한 이유
클러스터가 확장되고 애플리케이션 상태를 유지할 수 있도록 IP 주소 공간을 효과적으로 계획해야 합니다.
- 확장성 보장: IP 주소 소진을 방지하고 중단이 발생하는 네트워크 재설계 없이 클러스터를 확장할 수 있도록 노드, 포드, 서비스 IP 주소 범위를 효과적으로 계획합니다.
- 신뢰성 보장: GKE 클러스터와 Cloud VPN을 통해 연결된 온프레미스 환경과 같은 다른 네트워크 간에 IP 주소 범위가 중복되지 않도록 합니다. 범위가 중복되면 라우팅 충돌, 예측할 수 없는 동작, 서비스 중단이 발생할 수 있습니다.
- 보안 강화: IP 주소를 효과적으로 관리하여 네트워크 보안을 강화합니다. Kubernetes 네트워크 정책을 정의하여 포드 간 트래픽 흐름을 제어하고 네트워크 수준에서 워크로드 격리를 위한 방화벽 규칙을 구성합니다.
클러스터의 IP 주소 지정 모델 선택
GKE는 IPv4 전용, 이중 스택 (IPv4 및 IPv6), 곧 출시될 IPv6 전용 옵션 등 네트워킹 요구사항을 충족하는 여러 네트워크 스택 구성을 지원합니다.
IPv4 전용 (단일 스택)
이는 모든 클러스터 구성요소가 IPv4 주소를 사용하는 표준적이고 가장 일반적인 구성입니다. IPv4 전용 모델에서도 GKE는 다음과 같은 유연성을 제공합니다.
- RFC 1918 비공개 IP 주소: 클러스터에 RFC 1918 비공개 IP 주소 범위 (예:
10.0.0.0/8)를 사용합니다. - 비공개로 사용되는 공개 IP 주소 (PUPI): 조직에 충분한 비공개 IP 주소 공간이 없는 경우 VPC 네트워크 내에서 내부용으로 공개 IP 주소 범위를 사용할 수 있습니다. PUPI를 사용하는 경우 IP 매스커레이드 에이전트를 구성해야 합니다. 이 에이전트는 포드에서 나가는 트래픽에 소스 네트워크 주소 변환 (SNAT)을 수행합니다. SNAT가 없으면 PUPI를 사용하는 포드로의 반환 트래픽이 공개 인터넷을 통해 라우팅되어 실패합니다. IP 매스커레이드 에이전트는 아웃바운드 패킷의 소스 IP 주소를 포드의 PUPI에서 노드의 내부 IP 주소로 변경하여 이를 방지합니다. 이렇게 하면 반환 트래픽이 노드로 올바르게 라우팅된 후 원래 포드로 전달됩니다.
듀얼 스택(IPv4 및 IPv6)
이중 스택 클러스터는 IPv4 및 IPv6 프로토콜을 모두 사용합니다. GKE는 이중 스택 클러스터의 노드, 포드, 서비스에 IPv4 주소와 IPv6 주소를 모두 할당합니다. 이 모델은 다음과 같은 경우에 적합합니다.
- IPv6로의 점진적 전환을 지원합니다.
- IPv6 지원 워크로드와 기존 IPv4 전용 클라이언트 및 서비스와의 호환성을 보장합니다.
클러스터를 만들 때 이중 스택 네트워킹을 사용 설정하거나 기존 단일 스택 클러스터를 이중 스택으로 업데이트할 수 있습니다.
다음 단계
- GKE의 기본 네트워킹 모드의 이점에 대해 자세히 알아보려면 VPC 기반 클러스터 정보를 참고하세요.
- 시작하려면 VPC 기반 클러스터를 만드는 방법을 알아보세요.
- 클러스터의 IP 주소 범위 크기 조정에 관한 안내는 VPC 기반 클러스터의 IP 주소 범위 계획을 참고하세요.
- 일반적인 문제에 대한 도움말은 IP 매스커레이드 에이전트 문제 해결을 참고하세요.