네트워크 서비스 등급으로 외부 트래픽 구성

이 페이지에서는 네트워크 서비스 등급을 사용하여 Google Kubernetes Engine (GKE) 클러스터에서 외부 트래픽이 서비스에 도달하는 방식을 제어하는 방법을 보여줍니다. 네트워크 서비스 등급을 사용하면 성능 (프리미엄 등급) 또는 비용 절감 (표준 등급)을 위해 네트워크 트래픽을 최적화할 수 있습니다.

프리미엄 등급은 Google의 프리미엄 백본 네트워크를 통해 트래픽을 전달하여 뛰어난 속도와 안정성을 제공합니다. 반면 표준 등급은 비용 효율적인 솔루션을 제공하는 일반 인터넷 서비스 제공업체 (ISP) 네트워크를 사용합니다.

이 페이지는 조직의 네트워크를 설계하는 클라우드 설계자 및 네트워킹 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE 사용자 역할 및 태스크를 참조하세요.

GKE에서 네트워크 서비스 등급이 작동하는 방식

이 섹션에서는 GKE에서 네트워크 서비스 등급을 관리하는 방법을 보여줍니다.

  • 프로젝트 수준에서 네트워크 등급 설정: Google Cloud 프로젝트에서 표준 등급 또는 프리미엄 등급을 사용하도록 기본 네트워크 등급을 설정할 수 있습니다. 모든 새 클러스터는 프로젝트 수준 등급 설정을 상속하는 network-default 설정으로 생성됩니다. 이 설정은 클러스터 업그레이드를 통해 유지됩니다. 클러스터 내에서 생성된 노드 풀은 프로젝트 수준 구성에서 네트워크 등급을 상속합니다.

  • 새 클러스터를 만들 때 네트워크 등급 설정: Google Cloud 프로젝트의 등급 설정과 관계없이 새 클러스터를 만들 때 네트워크 등급을 구성할 수 있습니다. 새 노드 풀은 클러스터 수준 네트워크 등급을 사용하며, 이 구성은 노드 풀을 업그레이드한 후에도 유지됩니다.

  • 클러스터 업데이트 시 네트워크 등급 설정: 기존 클러스터를 업데이트할 때 네트워크 등급을 구성할 수 있습니다. 새 노드 풀과 새 LoadBalancer 서비스는 업데이트된 등급 구성을 상속받는 반면 기존 노드 풀과 서비스는 원래 네트워크 등급 구성을 계속 사용합니다. 업데이트된 계층 구성은 클러스터를 업그레이드한 후에도 유지됩니다.

  • LoadBalancer 서비스 업데이트 시 네트워크 등급 설정: LoadBalancer 서비스는 클러스터의 네트워크 등급을 상속합니다. 하지만 이 설정을 재정의하고 서비스 매니페스트에서 네트워크 등급을 업데이트할 수 있습니다.

네트워크 서비스 등급 및 부하 분산

기본적으로 외부 패스 스루 네트워크 부하 분산기는 프리미엄 등급을 사용합니다. LoadBalancer 서비스가 대신 표준 등급을 사용하도록 이 구성을 업데이트할 수 있습니다.

게이트웨이와 함께 애플리케이션 부하 분산기를 사용하는 경우 네트워크 서비스 등급을 구성할 수 없습니다. 게이트웨이의 네트워크 서비스 등급은 GatewayClass 리소스에 의해 제어됩니다. 자세한 내용은 게이트웨이 IP 주소를 참고하세요.

외부 애플리케이션 부하 분산기에 대한 GKE 인그레스는 트래픽 라우팅에 표준 등급을 지원하지 않습니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

제한사항

다음 제한사항이 적용됩니다.

  • 네트워크 등급 설정은 프로젝트 수준 또는 클러스터 수준에서만 구성할 수 있습니다. 노드 풀의 네트워크 등급을 직접 구성할 수는 없습니다.
  • 표준 등급은 전역 외부 이중 스택 IPv4 또는 IPv6 주소에 지원되지 않습니다. IP 주소 유형에 대한 자세한 내용은 IP 주소를 참고하세요.

네트워크 서비스 등급으로 클러스터 만들기

클러스터를 만들고 네트워크 등급을 지정하려면 다음 명령어를 실행합니다.

 gcloud container clusters create CLUSTER_NAME \
     --network-tier=NETWORK_TIER \
     ...

다음 값을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름입니다.
  • NETWORK_TIER: 네트워크 등급 설정입니다. Google Cloud 프로젝트와 동일한 등급 설정에는 network-default를 사용하고, 표준 등급에는 Standard를, 프리미엄 등급에는 Premium를 사용합니다.

기존 클러스터를 다른 등급으로 이전

클러스터의 네트워크 등급을 업데이트해도 기존 리소스의 네트워크 등급에는 영향을 주지 않습니다. 기존 리소스는 이전 네트워크 등급과 연결된 IP 주소를 계속 사용합니다. 서비스 중단을 방지하려면 클러스터를 새 네트워크 등급으로 마이그레이션할 때 다음 단계를 따르세요.

  1. 클러스터 업데이트: 네트워크 등급으로 기존 클러스터를 업데이트하려면 다음 명령어를 실행합니다.

    gcloud container clusters update CLUSTER_NAME \
        --network-tier=NETWORK_TIER \
        ...
    

    다음 값을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • NETWORK_TIER: 네트워크 등급 설정입니다. Google Cloud 프로젝트와 동일한 등급 설정에는 network-default를 사용하고, 표준 등급에는 Standard를, 프리미엄 등급에는 Premium를 사용합니다.
  2. 새 노드 풀 및 서비스 만들기: 외부 클라이언트가 새 네트워크 등급과 연결된 새 IP 주소를 사용하려면 새 노드 풀과 새 LoadBalancer 서비스를 만들어야 합니다. 새 노드 풀과 새 LoadBalancer 서비스는 업데이트된 등급 구성을 상속받는 반면 기존 노드 풀과 서비스는 원래 네트워크 등급 구성을 계속 사용합니다.

  3. DNS 레코드 업데이트: DNS 레코드를 변경하여 새 LoadBalancer 서비스의 새 IP 주소를 가리키도록 합니다.

  4. DNS가 전파될 때까지 기다리기: 클라이언트가 새 서비스로 연결되고 오래된 레코드가 제공되지 않도록 DNS TTL (수명)이 만료될 때까지 기다립니다.

네트워크 서비스 등급으로 외부 부하 분산기 업데이트

외부 패스 스루 네트워크 부하 분산기의 경우 GKE는 기본적으로 외부 전달 규칙 및 IP 주소에 대해 클러스터에 구성된 네트워크 등급을 사용합니다. 클러스터의 네트워크 등급이 network-default로 설정된 경우 부하 분산기는 프리미엄 등급을 사용합니다. 서비스 매니페스트에서 cloud.google.com/network-tier 주석을 구성하여 이 설정을 재정의할 수 있습니다. 예를 들면 다음과 같습니다.

    ```yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: store-v1-lb-svc
      annotations:
        cloud.google.com/l4-rbs: "enabled"
        cloud.google.com/network-tier: Standard
    spec:
      type: LoadBalancer
      selector:
        app: store
      ports:
      - name: tcp-port
        protocol: TCP
        port: 8080
        targetPort: 8080
    ```

LoadBalancer 서비스에 사용되는 파라미터에 대한 자세한 내용은 서비스 파라미터를 참고하세요.

고정 IP 주소: 고정 IP 주소로 서비스를 만들 때 고정 IP 주소의 네트워크 등급이 LoadBalancer 서비스의 네트워크 등급과 일치해야 합니다. 불일치가 있으면 kubectl describe service 명령어를 실행할 때 다음 오류 메시지가 표시됩니다.

Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB

다음 단계