Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) Cilium tarafından desteklenen Azure CNI'yi yapılandırma

Cilium tarafından desteklenen Azure CNI, yüksek performanslı ağ ve güvenlik sağlamak için Azure CNI'nin güçlü denetim düzlemini Cilium'un veri düzlemiyle birleştirir.

Linux çekirdeğine yüklenen eBPF programlarını ve daha verimli bir API nesne yapısını kullanarak Cilium tarafından desteklenen Azure CNI aşağıdaki avantajları sağlar:

  • Mevcut Azure CNI ve Azure CNI Katman eklentilerine eşdeğer işlevsellik

  • Geliştirilmiş Hizmet yönlendirmesi

  • Daha verimli ağ ilkesi zorlama

  • Küme trafiğinin daha iyi gözlemlenebilirliği

  • Daha büyük kümeler (daha fazla düğüm, pod ve hizmet) desteği

Cilium tarafından desteklenen Azure CNI ile IP Adresi Yönetimi (IPAM)

Cilium tarafından desteklenen Azure CNI, pod IP'leri atamak için iki farklı yöntem kullanılarak dağıtılabilir:

  • Katman ağından IP adresleri atama (Azure CNI Yer Paylaşımı moduna benzer)

  • Sanal ağdan IP adresleri atama (Dinamik Pod IP Ataması ile mevcut Azure CNI'ye benzer)

Hangi seçeneği belirleyebileceğinizden emin değilseniz"Kullanılacak ağ modelini seçme" ifadesini okuyun.

Ağ İlkesi Zorlama

Cilium, podlar arasındaki trafiğe izin vermek veya trafiği reddetmek için ağ ilkelerini zorunlu kılar. Cilium ile Azure Ağ İlkesi Yöneticisi veya Calico gibi ayrı bir ağ ilkesi altyapısı yüklemeniz gerekmez.

Sınırlamalar

Cilium tarafından desteklenen Azure CNI şu anda aşağıdaki sınırlamalara sahiptir:

  • Yalnızca Linux için kullanılabilir, Windows için kullanılamaz.

  • Cilium L7 ilke zorlama devre dışı bırakıldı.

  • Ağ ilkeleri düğüm veya pod IP'lerine erişime izin vermek için kullanamaz ipBlock . Ayrıntılar ve önerilen geçici çözüm için sık sorulan sorulara bakın.

  • Birden çok Kubernetes hizmeti, aynı ana bilgisayar bağlantı noktasını farklı protokollerle (örneğin, TCP veya UDP) kullanamaz (Cilium sorunu #14287).

  • Bir pod hizmet kümesi IP'si aracılığıyla kendisine bağlandığında yanıt paketlerinde ağ ilkeleri zorunlu kılınabilir (Cilium sorunu #19406).

  • Bu podlar tek tek kimliklere sahip olmak yerine konak kimliğini kullandığından, ağ ilkeleri konak ağı (spec.hostNetwork: true) kullanan podlara uygulanmaz.

Önkoşullar

  • Azure CLI sürüm 2.48.1 veya üzeri. Şu anda yüklü olan sürümü görmek için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

  • ARM şablonları veya REST API kullanılıyorsa AKS API sürümü 2022-09-02-preview veya üzeri olmalıdır.

Not

Önceki AKS API sürümleri (2022-09-02preview to 2023-01-02preview) alanını networkProfile.ebpfDataplane=ciliumkullanıyordu. 2023-02-02 sürümünden bu yana AKS API sürümleri, Cilium tarafından desteklenen Azure CNI'yi etkinleştirmek için alanını networkProfile.networkDataplane=cilium kullanır.

Cilium tarafından desteklenen Azure CNI ile yeni bir AKS Kümesi oluşturma

1. Seçenek: Katman ağından IP adresleri atama

Katman ağı ve Cilium ile küme oluşturmak için aşağıdaki komutları kullanın. , <resourceGroupName>ve <location>değerlerini <clusterName>değiştirin:

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --pod-cidr 192.168.0.0/16 \
    --network-dataplane cilium \
    --generate-ssh-keys

Not

bayrağı, --network-dataplane cilium aks-preview CLI uzantısının önceki sürümlerinde kullanılan kullanım --enable-ebpf-dataplane dışı bayrağının yerini alır.

2. Seçenek: Sanal ağdan IP adresleri atama

Düğümler için bir alt ağ ve podlar için bir alt ağ ile bir kaynak grubu ve sanal ağ oluşturmak için aşağıdaki komutları çalıştırın.

# Create the resource group
az group create --name <resourceGroupName> --location <location>
# Create a virtual network with a subnet for nodes and a subnet for pods
az network vnet create --resource-group <resourceGroupName> --location <location> --name <vnetName> --address-prefixes <address prefix, example: 10.0.0.0/8> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name nodesubnet --address-prefixes <address prefix, example: 10.240.0.0/16> -o none
az network vnet subnet create --resource-group <resourceGroupName> --vnet-name <vnetName> --name podsubnet --address-prefixes <address prefix, example: 10.241.0.0/16> -o none

kullanarak --network-dataplane ciliumkümeyi oluşturun:

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --max-pods 250 \
    --network-plugin azure \
    --vnet-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/nodesubnet \
    --pod-subnet-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/podsubnet \
    --network-dataplane cilium \
    --generate-ssh-keys

Cilium tarafından desteklenen mevcut bir kümeyi Azure CNI'ye güncelleştirme

Not

Küme aşağıdaki ölçütleri karşılıyorsa mevcut bir kümeyi Cilium tarafından desteklenen Azure CNI'ye güncelleştirebilirsiniz:

Not

Farklı bir ağ ilkesi altyapısına (Azure NPM veya Calico) sahip bir kümede Cilium etkinleştirilirken, ağ ilkesi altyapısı kaldırılır ve cilium ile değiştirilir. Diğer ayrıntılar için bkz . Azure Ağ İlkesi Yöneticisi'ni veya Calico'u kaldırma.

Uyarı

Yükseltme işlemi her düğüm havuzunun aynı anda yeniden görüntüsünün alınması için tetikler. Her düğüm havuzunun ayrı olarak yükseltilmesi desteklenmez. Küme ağındaki tüm kesintiler, düğüm havuzundaki her düğümün yeniden görüntülendiği düğüm görüntüsü yükseltmesine veya Kubernetes sürümü yükseltmesine benzer. Cilium, yalnızca tüm düğümler yeniden görüntülendikten sonra ağ ilkelerini zorlamaya başlar.

Yükseltmeyi gerçekleştirmek için Azure CLI sürüm 2.52.0 veya üzeri gerekir. Şu anda yüklü olan sürümü görmek için komutunu çalıştırın az --version . Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Mevcut bir kümeyi Cilium tarafından desteklenen Azure CNI'ye yükseltmek için aşağıdaki komutu kullanın. ve <resourceGroupName>değerlerini <clusterName> değiştirin:

az aks update --name <clusterName> --resource-group <resourceGroupName> \
  --network-dataplane cilium

Not

Aks kümesinde Cilium tarafından desteklenen Azure CNI'yi etkinleştirdikten sonra devre dışı bırakamazsınız. Farklı bir ağ veri düzlemi kullanmak istiyorsanız yeni bir AKS kümesi oluşturmanız gerekir.

Sık sorulan sorular

  • Cilium yapılandırmasını özelleştirebilir miyim?

    Hayır, AKS, Cilium yapılandırmasını yönetir ve değiştirilemez. Daha fazla denetim gerektiren müşterilerin AKS BYO CNI kullanmasını ve Cilium'u el ile yüklemesini öneririz.

  • Kubernetes NetworkPolicy kaynakları yerine özel kaynaklar kullanabilir CiliumNetworkPolicy miyim?

    CiliumNetworkPolicy özel kaynaklar kısmen desteklenir. Müşteriler Gelişmiş Kapsayıcı Ağ Hizmetleri özellik paketinin bir parçası olarak FQDN filtrelemeyi kullanabilir.

    Bu CiliumNetworkPolicy örnekte, belirtilen etiketle eşleşen hizmetler için örnek eşleştirme deseni gösterilmektedir.

    apiVersion: "cilium.io/v2"
    kind: CiliumNetworkPolicy
    metadata:
      name: "example-fqdn"
    spec:
      endpointSelector:
        matchLabels:
          foo: bar
      egress:
      - toFQDNs:
        - matchPattern: "*.example.com"
    
  • IP adresine izin veren bir ipBlock olduğunda trafik neden engelleniyorNetworkPolicy?

    Cilium tarafından desteklenen Azure CNI'nin bir sınırlaması, bir NetworkPolicy'nin ipBlock pod veya düğüm IP'lerini seçememesidir.

    Örneğin, buNetworkPolicy, tüm çıkışa 0.0.0.0/0izin veren bir ipBlock öğesine sahiptir:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: example-ipblock
    spec:
      podSelector: {}
      policyTypes:
        - Egress
      egress:
        - to:
          - ipBlock:
              cidr: 0.0.0.0/0 # This will still block pod and node IPs.
    

    Ancak bu NetworkPolicy uygulandığında Cilium, IP'ler CIDR içinde ipBlock olsa bile pod ve düğüm IP'lerine çıkışı engeller.

    Geçici bir çözüm olarak, podları seçmek için ve podSelector ekleyebilirsiniznamespaceSelector. Aşağıdaki örnek tüm ad alanları içindeki tüm podları seçer:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: example-ipblock
    spec:
      podSelector: {}
      policyTypes:
        - Egress
      egress:
        - to:
          - ipBlock:
              cidr: 0.0.0.0/0
          - namespaceSelector: {}
          - podSelector: {}
    

    Not

    Şu anda düğüm IP'lerine NetworkPolicy giden trafiğe izin vermek için ile ipBlock belirtilmesi mümkün değildir.

  • AKS, Cilium daemonsetüzerinde CPU veya bellek sınırlarını yapılandırıyor mu?

    Hayır, Cilium pod ağı ve ağ ilkesi zorlama için kritik bir sistem bileşeni olduğundan AKS, Cilium'da daemonset CPU veya bellek sınırlarını yapılandırmaz.

  • Cilium tarafından desteklenen Azure CNI Kube-Proxy kullanıyor mu?

    Hayır, Cilium olarak ağ veri düzlemi ile oluşturulan AKS kümeleri Kube-Proxy kullanmaz. AKS kümeleri Dinamik IP ayırmalı Azure CNI Katmanı veya Azure CNI üzerindeyse ve Cilium tarafından desteklenen Azure CNI çalıştıran AKS kümelerine yükseltilirse, yeni düğüm iş yükleri kube-proxy olmadan oluşturulur. Eski iş yükleri de bu yükseltme işleminin bir parçası olarak kube-proxy olmadan çalışacak şekilde geçirilir.

Sonraki adımlar

AKS'de ağ iletişimi hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: