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=cilium
kullanı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 cilium
kü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:
- Küme, dinamik IP ayırma ile Azure CNI Katmanı veya Azure CNI kullanır. Buna Azure CNI dahil değildir.
- Kümenin Windows düğüm havuzu yok.
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 kullanabilirCiliumNetworkPolicy
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
'ninipBlock
pod veya düğüm IP'lerini seçememesidir.Örneğin, bu
NetworkPolicy
, tüm çıkışa0.0.0.0/0
izin veren biripBlock
öğ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çindeipBlock
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 ileipBlock
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:
Azure Kubernetes Service