Dataplan V2 사용

이 페이지에서는 Google Kubernetes Engine(GKE)용 Dataplans V2에 대해 설명합니다.

Dataplane V2 정보

Dataplane V2는 eBPF를 기반으로 하며 Linux 노드가 커널에서 네트워크 패킷을 유연하고 원활하게 처리할 수 있도록 합니다. Dataplane V2에는 제3자 부가기능 없이 기본 네트워크 정책 시행 및 네트워크 정책 로깅이 포함됩니다.

네트워크 정책 로깅을 사용하려면 GKE 클러스터에서 Dataplane V2를 사용 설정해야 합니다. 자세한 내용은 Dataplane V2로 클러스터 만들기 섹션을 참조하세요.

제한사항

  • Dataplane V2는 새 클러스터에서만 사용 설정할 수 있습니다. Dataplane V2를 사용하기 위해 기존 클러스터를 업그레이드할 수 없습니다.
  • Windows 노드는 Dataplane V2를 지원하지 않습니다.

베타 제한사항

  • Dataplan V2는 베타 버전이지만 이전 버전과의 호환성은 보장되지 않습니다. 새 버전의 Dataplan V2를 사용할 수 있게 되면 Dataplan V2를 사용하여 클러스터를 다시 만들어야 할 수도 있습니다.
  • 일부 Kubernetes 및 GKE 기능은 베타 버전에서 작동하지 않는 것으로 알려져 있습니다.
    • ExternalTrafficPolicy:local를 설정하고 hostNetwork:true로 실행되는 pod가 지원하는 Kubernetes 서비스는 클러스터 외부의 클라이언트에서 트래픽을 수신할 수 없습니다.
    • 모든 노드 IP가 아닌 일부를 선택하는 CIDR 범위와 함께 FromCIDR을 사용하는 Kubernetes 네트워크 정책은 작동하지 않습니다.
    • NodeLocal DNSCache를 포함한 일부 기능은 지원되지 않습니다.
  • Dataplane V2용 Google Cloud Console 인터페이스는 없습니다.

Dataplane V2로 GKE 클러스터 만들기

GKE 1.17.9 이상을 사용하는 새 클러스터를 만들 때 Dataplane V2를 사용 설정할 수 있습니다.

gcloud

Dataplane V2를 사용하여 새 클러스터를 만들려면 다음 명령어를 사용하세요.

gcloud beta container clusters create cluster-name \
    --enable-dataplane-v2 \
    --enable-ip-alias \
    --cluster-version version \
    --release-channel channel-name \
    {--region region-name | --zone zone-name}

다음을 바꿉니다.

  • cluster-name: 새 클러스터의 이름입니다.
  • version: 클러스터 버전이며 GKE 1.17.9 이상이어야 합니다.
  • channel-name: GKE 버전 1.17.9 이상이 포함된 출시 채널입니다.
  • region-name 또는 zone-name: 클러스터의 위치입니다. 이러한 인수는 상호 배타적입니다. 자세한 내용은 클러스터 유형을 참조하세요.

API

Dataplan V2로 새 클러스터를 만들려면 클러스터 create 요청networkConfig 객체에서 datapathProvider 필드를 지정합니다.

다음 JSON 스니펫은 Dataplane V2를 사용 설정하는 데 필요한 구성을 보여줍니다.

"cluster":{
  "initialClusterVersion":"version",
  "ipAllocationPolicy":{
     "useIpAliases":true
  },
  "networkConfig":{
     "datapathProvider":"ADVANCED_DATAPATH"
  },
  "releaseChannel":{
     "channel":"channel-name"
  }
}

다음을 바꿉니다.

  • version: 클러스터 버전이며 GKE 1.17.9 이상이어야 합니다.
  • channel-name: GKE 버전 1.17.9 이상이 포함된 출시 채널입니다.

문제 해결

  1. 시스템 pod 상태를 확인합니다.

    kubectl -n kube-system get pods
    

    Dataplane V2가 실행 중인 경우 프리픽스가 anetd-인 pod가 HEALTHY 상태로 실행됩니다. anetd는 Dataplane V2의 네트워킹 컨트롤러입니다.

  2. 서비스 또는 네트워크 정책 적용과 관련된 문제라면 anetd pod 로그를 확인합니다.

    kubectl -n kube-system describe pod anetd-pod
    kubectl -n kube-system logs anetd-pod
    

    anetd-pod을 이전에 식별된 anetd pod의 이름으로 바꿉니다.

  3. pod 만들기가 실패하면 kubelet 로그에서 단서를 찾아보세요.

    gcloud compute ssh node -- sudo journalctl -u kubelet
    

    node을 VM 인스턴스의 이름으로 바꿉니다.

다음 단계