다음을 통해 공유


AKS(Azure Kubernetes Service)를 사용하여 고유한 CNI(Container Network Interface) 플러그 인 가져오기

Kubernetes에서는 기본적으로 네트워크 인터페이스 시스템을 제공하지 않습니다. 대신 네트워크 플러그 인에서 이 기능을 제공합니다. AKS(Azure Kubernetes Service)는 지원되는 몇 가지 CNI 플러그 인을 제공합니다. 지원되는 플러그 인에 대한 자세한 내용은 AKS 네트워킹 개념을 참조하세요.

지원되는 플러그 인은 Kubernetes의 네트워킹 요구 사항을 대부분 충족합니다. 그러나 고급 AKS 사용자는 온-프레미스 Kubernetes 환경에서 동일한 CNI 플러그 인을 사용하거나, 다른 CNI 플러그 인에서 사용할 수 있는 고급 기능을 사용할 수 있습니다.

이 문서에서는 사전 설치된 CNI 플러그 인이 없는 AKS 클러스터를 배포하는 방법을 보여 줍니다. 이를 통해 Azure에서 작동하는 타사 CNI 플러그 인을 설치할 수 있습니다.

지원

Microsoft 지원은 BYOCNI(Bring Your Own Container Network Interface)를 사용하여 배포된 클러스터에서 CNI 관련 문제를 지원할 수 없습니다. 예를 들어 CNI 관련 문제는 kubectl proxy 및 유사한 명령과 함께 대부분의 동/서부(Pod-Pod) 트래픽을 포합합니다. CNI 관련 지원을 받으려면, 지원되는 AKS 네트워크 플러그 인을 사용하거나 BYOCNI 플러그 인 타사 공급업체의 지원을 요청합니다.

CNI와 관련 없는 문제는 계속 지원됩니다.

필수 조건

  • ARM(Azure Resource Manager) 또는 Bicep에서는 템플릿 버전 2022-01-02-preview 또는 2022-06-01 이상을 사용합니다.
  • Azure CLI에서는 버전 2.39.0 이상을 사용합니다.
  • AKS 클러스터에 대한 가상 네트워크는 아웃바운드 인터넷 연결을 허용해야 합니다.
  • AKS 클러스터는 Kubernetes 서비스 주소 범위, Pod 주소 범위 또는 클러스터 가상 네트워크 주소 범위에 대해 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 또는 192.0.2.0/24를 사용할 수 없습니다.
  • AKS 클러스터에서 사용되는 클러스터 ID에는 가상 네트워크 내의 서브넷에서 네트워크 기여자 이상의 권한이 있어야 합니다. 기본 제공 네트워크 참가자 역할을 사용하는 대신 사용자 지정 역할을 정의하려는 경우 다음 권한이 필요합니다.
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • AKS 노드 풀에 할당된 서브넷은 위임된 서브넷일 수 없습니다.
  • AKS는 서브넷에 NSG(네트워크 보안 그룹)를 적용하지 않고 해당 서브넷과 연결된 NSG를 수정하지 않습니다. 고유한 서브넷을 제공하고 해당 서브넷과 연결된 NSG를 추가하는 경우 NSG의 보안 규칙이 노드 CIDR 범위 내의 트래픽을 허용하는지 확인해야 합니다. 자세한 내용은 네트워크 보안 그룹을 참조하세요.

CNI 플러그 인이 사전 설치되지 않은 AKS 클러스터 만들기

  1. az group create 명령을 사용하여 AKS 클러스터에 대한 Azure 리소스 그룹을 만듭니다.

    az group create --location eastus --name myResourceGroup
    
  2. az aks create 명령을 사용하여 AKS 클러스터를 만듭니다. 매개 변수 값이 none--network-plugin 매개 변수를 전달합니다.

    az aks create \
        --location eastus \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --network-plugin none \
        --generate-ssh-keys
    

CNI 플러그 인 배포

AKS 프로비전이 완료되면 클러스터는 온라인 상태이지만, 노드는 모두 다음 예제와 같이 NotReady 상태입니다.

  $ kubectl get nodes
  NAME                                STATUS     ROLES   AGE    VERSION
  aks-nodepool1-23902496-vmss000000   NotReady   agent   6m9s   v1.21.9

  $ kubectl get node -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].message'
  NAME                                STATUS
  aks-nodepool1-23902496-vmss000000   container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized

이 시점에서 클러스터는 CNI 플러그 인을 설치할 준비가 된 것입니다.

다음 단계

AKS의 네트워킹에 대한 자세한 내용은 다음 문서를 참조하세요.