Mengonfigurasi Azure CNI Powered by Cilium di Azure Kubernetes Service (AKS)
Azure CNI Powered by Cilium menggabungkan sarana kontrol Azure CNI yang kuat dengan bidang data Cilium untuk menyediakan jaringan dan keamanan berkinerja tinggi.
Dengan memanfaatkan program eBPF yang dimuat ke kernel Linux dan struktur objek API yang lebih efisien, Azure CNI Powered by Cilium memberikan manfaat berikut:
Fungsionalitas yang setara dengan plugin Azure CNI dan Azure CNI Overlay yang ada
Perutean Layanan yang Ditingkatkan
Penegakan kebijakan jaringan yang lebih efisien
Pengamatan lalu lintas kluster yang lebih baik
Dukungan untuk kluster yang lebih besar (lebih banyak simpul, pod, dan layanan)
Ip Address Management (IPAM) dengan Azure CNI Powered by Cilium
Azure CNI Powered by Cilium dapat disebarkan menggunakan dua metode berbeda untuk menetapkan IP pod:
Menetapkan alamat IP dari jaringan overlay (mirip dengan mode Overlay Azure CNI)
Menetapkan alamat IP dari jaringan virtual (mirip dengan Azure CNI yang ada dengan Penetapan IP Pod Dinamis)
Jika Anda tidak yakin opsi mana yang akan dipilih, baca "Memilih model jaringan yang akan digunakan".
Penegakan Kebijakan Jaringan
Cilium memberlakukan kebijakan jaringan untuk mengizinkan atau menolak lalu lintas antar pod. Dengan Cilium, Anda tidak perlu menginstal mesin kebijakan jaringan terpisah seperti Azure Network Policy Manager atau Calico.
Batasan
Azure CNI yang didukung oleh Cilium saat ini memiliki batasan berikut:
Hanya tersedia untuk Linux dan bukan untuk Windows.
Penegakan kebijakan Cilium L7 dinonaktifkan.
Kebijakan jaringan tidak dapat digunakan
ipBlock
untuk mengizinkan akses ke IP simpul atau pod. Lihat tanya jawab umum untuk detail dan solusi yang direkomendasikan.Beberapa layanan Kubernetes tidak dapat menggunakan port host yang sama dengan protokol yang berbeda (misalnya, TCP atau UDP) (masalah Cilium #14287).
Kebijakan jaringan dapat diberlakukan pada paket balasan ketika pod terhubung ke dirinya sendiri melalui IP kluster layanan (masalah Cilium #19406).
Kebijakan jaringan tidak diterapkan ke pod menggunakan jaringan host (
spec.hostNetwork: true
) karena pod ini menggunakan identitas host alih-alih memiliki identitas individual.
Prasyarat
Azure CLI versi 2.48.1 atau yang lebih baru. Jalankan
az --version
untuk melihat versi yang saat ini diinstal. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.Jika menggunakan templat ARM atau REST API, versi API AKS harus 2022-09-02-preview atau yang lebih baru.
Catatan
Versi API AKS sebelumnya (2022-09-02preview ke 2023-01-02preview) menggunakan bidang networkProfile.ebpfDataplane=cilium
. Versi AKS API sejak 2023-02-02preview menggunakan bidang networkProfile.networkDataplane=cilium
untuk mengaktifkan Azure CNI Powered by Cilium.
Membuat Kluster AKS baru dengan Azure CNI Powered by Cilium
Opsi 1: Menetapkan alamat IP dari jaringan overlay
Gunakan perintah berikut untuk membuat kluster dengan jaringan overlay dan Cilium. Ganti nilai untuk <clusterName>
, <resourceGroupName>
, dan <location>
:
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
Catatan
Bendera --network-dataplane cilium
menggantikan bendera yang tidak --enable-ebpf-dataplane
digunakan lagi dalam versi ekstensi CLI aks-preview sebelumnya.
Opsi 2: Menetapkan alamat IP dari jaringan virtual
Jalankan perintah berikut untuk membuat grup sumber daya dan jaringan virtual dengan subnet untuk simpul dan subnet untuk pod.
# 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
Buat kluster menggunakan --network-dataplane cilium
:
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
Tanya jawab umum
Dapatkah saya menyesuaikan konfigurasi Cilium?
Tidak, AKS mengelola konfigurasi Cilium dan tidak dapat dimodifikasi. Kami menyarankan agar pelanggan yang memerlukan kontrol lebih besar menggunakan AKS BYO CNI dan menginstal Cilium secara manual.
Dapatkah saya menggunakan
CiliumNetworkPolicy
sumber daya kustom alih-alih sumber daya KubernetesNetworkPolicy
?CiliumNetworkPolicy
sumber daya kustom didukung sebagian. Pelanggan dapat menggunakan pemfilteran FQDN sebagai bagian dari bundel fitur Layanan Jaringan Kontainer Tingkat Lanjut.Contoh ini
CiliumNetworkPolicy
menunjukkan pola pencocokan sampel untuk layanan yang cocok dengan label yang ditentukan.apiVersion: "cilium.io/v2" kind: CiliumNetworkPolicy metadata: name: "example-fqdn" spec: endpointSelector: matchLabels: foo: bar egress: - toFQDNs: - matchPattern: "*.example.com"
Mengapa lalu lintas diblokir ketika
NetworkPolicy
memiliki yangipBlock
memungkinkan alamat IP?Batasan Azure CNI Powered by Cilium adalah bahwa
NetworkPolicy
'sipBlock
tidak dapat memilih IP pod atau node.Misalnya, ini
NetworkPolicy
memilikiipBlock
yang memungkinkan semua egress untuk0.0.0.0/0
: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.
Namun, ketika ini
NetworkPolicy
diterapkan, Cilium akan memblokir egress ke IP pod dan node meskipun IP berada dalamipBlock
CIDR.Sebagai solusinya, Anda dapat menambahkan
namespaceSelector
danpodSelector
memilih pod. Contoh di bawah ini memilih semua pod di semua namespace: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: {}
Catatan
Saat ini tidak dimungkinkan untuk menentukan
NetworkPolicy
denganipBlock
untuk mengizinkan lalu lintas ke IP node.Apakah AKS mengonfigurasi batas CPU atau memori pada Cilium
daemonset
?Tidak, AKS tidak mengonfigurasi batas CPU atau memori pada Cilium
daemonset
karena Cilium adalah komponen sistem penting untuk jaringan pod dan penegakan kebijakan jaringan.Apakah Azure CNI didukung oleh Cilium menggunakan Kube-Proxy?
Tidak, kluster AKS yang dibuat dengan dataplane jaringan karena Cilium tidak menggunakan Kube-Proxy. Jika kluster AKS berada di Azure CNI Overlay atau Azure CNI dengan alokasi IP dinamis dan ditingkatkan ke kluster AKS yang menjalankan Azure CNI yang didukung oleh Cilium, beban kerja simpul baru dibuat tanpa kube-proxy. Beban kerja yang lebih lama juga dimigrasikan untuk berjalan tanpa kube-proxy sebagai bagian dari proses peningkatan ini.
Langkah berikutnya
Pelajari selengkapnya tentang jaringan di AKS di artikel berikut ini:
Tingkatkan mode IPAM Azure Kubernetes Service (AKS) dan Teknologi Dataplane.
Gunakan alamat IP publik statik dengan load balancer Azure Kubernetes Service (AKS)
Gunakan load balancer internal dengan Azure Container Service (AKS)
Membuat pengontrol ingress dasar dengan konektivitas jaringan eksternal
Azure Kubernetes Service