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

  • Ağ politikalarının daha verimli uygulanması

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

  • Daha fazla düğüm, pod ve servis içeren daha büyük kümeler için destek

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ğ modeli seçme" ifadesini okuyun.

Versions

Kubernetes Sürümü En Düşük Cilium Sürümü
1,29 (LTS) 1.14.19
1.30 1.14.19
1.31 1.16.6
1.32 1.17.0
1.33 1.17.0

AKS sürüm oluşturma ve sürüm zaman çizelgeleri hakkında daha fazla bilgi için bkz. Desteklenen Kubernetes Sürümleri .

Ağ İlkesi Uygulaması

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.

Limitations

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.

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

  • Cilium 1.16 veya önceki sürümleri için, birden çok Kubernetes hizmeti farklı protokollerle (örneğin, TCP veya UDP) aynı ana bilgisayar bağlantı noktasını kullanamaz (Cilium sorunu #14287).

  • Podlar tek tek kimliklere sahip olmak yerine konak kimliğini kullandığından, ağ ilkeleri konak ağı kullanan podlara uygulanmaz.

  • Cilium Endpoint Slices, Kubernetes sürüm 1.32 ve üzeri sürümlerde desteklenir. Cilium Uç Nokta Dilimleri, Cilium Uç Noktalarının nasıl gruplandırıldıklarına yönelik yapılandırmayı desteklemez. cilium.io/ces-namespace aracılığıyla öncelikli ad alanı desteklenmez.

  • L7 ilkesi CiliumClusterwideNetworkPolicy (CCNP) tarafından desteklenmez.

Considerations

Ağ trafiğinizde gözlemlenebilirlik ve kümenizde Tam Etki Alanı Adı (FQDN) tabanlı filtreleme ve Katman 7 tabanlı ağ ilkeleri gibi güvenlik özellikleri elde etmek için, kümelerinizde Gelişmiş Kapsayıcı Ağı hizmetlerini etkinleştirmeyi göz önünde bulundurun.

Prerequisites

  • Azure CLI sürüm 2.48.1 veya üzeri. az --version komutunu çalıştırarak yüklü olan sürümü görebilirsiniz. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

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

Note

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

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. <clusterName>, <resourceGroupName> ve <location> değerlerini 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

Note

Önceki sürümlerde kullanılan aks-preview CLI uzantısına ait kullanım dışı --network-dataplane cilium bayrağının yerini --enable-ebpf-dataplane bayrağı alır.

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

Düğümler için bir alt ağa ve podlar için bir alt ağa sahip 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

Seçenek 3: Node Alt Ağından IP adresleri atama

Note

Azure CLI sürüm 2.69.0 veya üzeri gereklidir. az --version komutunu çalıştırarak yüklü olan sürümü görebilirsiniz. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

Cilium veri düzlemi ile düğüm alt ağı kullanarak küme oluşturma:

az aks create \
    --name <clusterName> \
    --resource-group <resourceGroupName> \
    --location <location> \
    --network-plugin azure \
    --network-dataplane cilium \
    --generate-ssh-keys

Sıkça 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 CiliumNetworkPolicy kaynakları yerine özel kaynaklar kullanabilir NetworkPolicy miyim?

    L3 ve L4 CiliumNetworkPolicy desteklenir ve Kubernetes NetworkPolicy kaynaklarıyla birlikte kullanılabilir.

    Müşteriler , Gelişmiş Kapsayıcı Ağ Hizmetleri özellik paketinin bir parçası olarak FQDN filtreleme ve Katman 7 İlkeleri kullanabilir.

  • CiliumClusterwideNetworkPolicy kullanabilir miyim?

    Evet, CiliumClusterwideNetworkPolicy desteklenir. Aşağıdaki örnek politika YAML'si, bir L4 kuralının yapılandırılmasını gösterir.

    apiVersion: "cilium.io/v2"
    kind: CiliumClusterwideNetworkPolicy
    metadata:
      name: "l4-rule-ingress-backend-frontend"
    spec:
      endpointSelector:
        matchLabels:
          role: backend
      ingress:
        - fromEndpoints:
            - matchLabels:
                role: frontend
          toPorts:
            - ports:
                - port: "80"
                  protocol: TCP
    
  • Azure tarafından yönetilen CNI'de hangi Cilium özellikleri desteklenir? Bunlardan hangisi Gelişmiş Kapsayıcı Ağ Hizmetleri gerektirir?

    Desteklenen Özellik ACNS olmadan birlikte ACNS ile
    Cilium Uç Nokta Dilimleri ✔️ ✔️
    K8s Ağ İlkeleri ✔️ ✔️
    Cilium L3/L4 Ağ İlkeleri ✔️ ✔️
    Cilium Kümesi Genelinde Ağ İlkesi ✔️ ✔️
    FQDN Filtreleme ✔️
    L7 Ağ İlkeleri (HTTP/gRPC/Kafka) ✔️
    Kapsayıcı Ağ Gözlemlenebilirliği (Ölçümler ve Akış günlükleri) ✔️
    eBPF Ana Bilgisayar Yönlendirmesi ✔️
  • IP adresine izin veren bir NetworkPolicy olduğunda trafik neden engelleniyoripBlock?

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

    Örneğin, buNetworkPolicy, tüm çıkışa ipBlockizin veren bir 0.0.0.0/0 öğ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, IP'ler CIDR içinde ipBlock olsa bile Cilium, pod ve düğüm IP'lerine çıkış trafiğini engeller.

    Geçici bir çözüm olarak, namespaceSelector ve podSelector ekleyerek podları seçebilirsiniz. Bu ö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: {}
    

    Note

    Şu anda düğüm IP'lerine trafik verilmesine izin verecek bir NetworkPolicy ve ipBlock belirleyemezsiniz.

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

    Hayır, Cilium, pod ağ iletişimi ve ağ politikası uygulama 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 Azure CNI Katmanı veya Dinamik IP ayırmalı 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.

Cilium tarafından desteklenen Azure CNI ile çift yığınlı ağ

Çift yığınlı AKS kümelerinizi Cilium tarafından desteklenen Azure CNI ile dağıtabilirsiniz. Bu, IPv6 trafiğinizi Cilium Ağ İlkesi altyapısıyla denetlemenize de olanak tanır.

Önemli

Kubernetes sürüm 1.29 veya üzeri olmalıdır.

Cilium tarafından desteklenen Azure CNI ile Katman kümelerini ayarlama

[az aks create][az-aks-create] komutunu kullanarak Azure CNI Katmanı ile bir küme oluşturun. Cilium veri düzlemini belirtmek için --network-dataplane cilium bağımsız değişkenini kullandığınızdan emin olun.

clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --network-dataplane cilium \
    --ip-families ipv4,ipv6 \
    --generate-ssh-keys

Sonraki Adımlar

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