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 주소 범위 또는 192.0.2.0/24 클러스터 가상 네트워크 주소 범위를 사용할 172.31.0.0/16169.254.0.0/16172.30.0.0/16수 없습니다.
  • AKS 클러스터에서 사용되는 클러스터 ID에는 가상 네트워크 내의 서브넷에서 네트워크 기여자 이상의 권한이 있어야 합니다. 기본 제공 네트워크 참가자 역할을 사용하는 대신 사용자 지정 역할을 정의하려면 다음 권한이 필요합니다.
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • AKS 노드 풀에 할당된 서브넷은 위임된 서브넷수 없습니다.
  • AKS는 서브넷에 NSG(네트워크 보안 그룹)를 적용하거나 해당 서브넷과 연결된 NSG를 수정하지 않습니다. 고유한 서브넷을 제공하고 해당 서브넷과 연결된 NSG를 추가하는 경우 NSG의 보안 규칙이 노드 CIDR 범위 내의 트래픽을 허용하는지 확인해야 합니다. 자세한 내용은 네트워크 보안 그룹을 참조하세요.

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

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

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

    az aks create -l eastus -g myResourceGroup -n myAKSCluster --network-plugin none
    

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의 네트워킹에 대한 자세한 내용은 다음 문서를 참조하세요.