Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk membantu mengamankan dan melindungi beban kerja kontainer Anda dari kode yang tidak tepercaya atau berpotensi berbahaya, AKS sekarang menyertakan mekanisme yang disebut Pod Sandboxing. Pod Sandboxing menyediakan batas isolasi antara aplikasi kontainer dan kernel bersama dan sumber daya komputasi host kontainer seperti CPU, memori, dan jaringan. Aplikasi dijalankan dalam mesin virtual pod (VM) yang terisolasi dan ringan. Pod Sandboxing melengkapi langkah-langkah keamanan atau kontrol perlindungan data lainnya dengan arsitektur Anda secara keseluruhan untuk membantu Anda memenuhi persyaratan kepatuhan peraturan, industri, atau tata kelola untuk mengamankan informasi sensitif.
Artikel ini membantu Anda memahami fitur baru ini, dan cara menerapkannya.
Prerequisites
Azure CLI versi 2.80.0 atau yang lebih baru. Jalankan
az --versionuntuk menemukan versi Azure CLI Anda, dan jalankanaz upgradeuntuk meningkatkan. Untuk detail selengkapnya, lihat langkah-langkah di Menginstal Azure CLI.AKS mendukung Pod Sandboxing pada Kubernetes versi 1.27.0 dan yang lebih tinggi.
Untuk mengelola kluster Kubernetes, gunakan kubectl klien baris perintah Kube. Azure Cloud Shell dilengkapi dengan
kubectl. Anda dapat menginstal kubectl secara lokal menggunakan perintah az aks install-cli .
Limitations
Berikut ini adalah batasan yang berlaku untuk Pod Sandboxing:
Kontainer Kata mungkin tidak mencapai batas performa IOPS yang dapat dijangkau kontainer tradisional di Azure Files dan SSD lokal berkinerja tinggi.
Microsoft Defender for Containers tidak mendukung penilaian pod runtime Kata.
Akses jaringan host Kata tidak didukung. Tidak dimungkinkan untuk langsung mengakses konfigurasi jaringan host dari dalam VM.
Alokasi CPU dan memori dengan Pod Sandboxing memiliki pertimbangan lain dibandingkan
runc. Referensikan bagian manajemen memori di halaman pertimbangan.
Cara kerjanya
Pod Sandboxing pada AKS dibangun di atas proyek Kata Containers sumber terbuka. Kontainer Kata yang berjalan pada host kontainer Azure Linux untuk AKS menyediakan isolasi berbasis VM dan kernel terpisah untuk setiap pod. Pod Sandboxing memungkinkan pengguna untuk mengalokasikan sumber daya untuk setiap pod dan tidak membagikannya dengan Kontainer Kata atau kontainer namespace lainnya yang berjalan pada host yang sama.
Arsitektur solusi didasarkan pada komponen utama berikut:
- Host kontainer Azure Linux untuk AKS
- Microsoft Hyper-V Hypervisor
- Cloud-Hypervisor Virtual Machine Monitor (VMM) sumber terbuka
- Integrasi dengan Kata Container untuk runtime
Menyebarkan Pod Sandboxing menggunakan Kata Containers mirip dengan alur kerja standar containerd untuk menyebarkan kontainer. Kluster dengan fitur Pod Sandboxing yang diaktifkan dilengkapi dengan kelas runtime khusus yang dapat dirujuk dalam manifes pod (runtimeClassName: kata-vm-isolation).
Untuk menggunakan fitur ini dengan pod, satu-satunya perbedaan adalah menambahkan runtimeClassName, kata-vm-isolation ke spesifikasi pod. Ketika pod menggunakan kata-vm-isolation runtimeClass, hypervisor mengaktifkan mesin virtual ringan dengan kernelnya sendiri, sehingga beban kerja dapat beroperasi.
Menyebarkan kluster baru
Lakukan langkah-langkah berikut untuk menyebarkan kluster Azure Linux AKS menggunakan Azure CLI.
Buat kluster AKS menggunakan perintah az aks create dan tentukan parameter berikut:
- --workload-runtime: Tentukan KataVmIsolation untuk mengaktifkan fitur Pod Sandboxing pada kumpulan simpul. Dengan parameter ini, parameter lain ini harus memenuhi persyaratan berikut. Jika tidak, perintah gagal dan melaporkan masalah dengan parameter yang sesuai.
- --os-sku: AzureLinux. Hanya os-sku Linux Azure yang mendukung fitur ini.
- --node-vm-size: Ukuran Azure VM apa pun yang merupakan VM generasi 2 dan mendukung pekerjaan virtualisasi berlapis. Misalnya, VM Dsv3 .
Contoh berikut membuat kluster bernama myAKSCluster dengan satu node di myResourceGroup:
az aks create --name myAKSCluster \ --resource-group myResourceGroup \ --os-sku AzureLinux \ --workload-runtime KataVmIsolation \ --node-vm-size Standard_D4s_v3 \ --node-count 3 \ --generate-ssh-keysJalankan perintah berikut untuk mendapatkan kredensial akses untuk kluster Kubernetes. Gunakan perintah az aks get-credentials dan ganti nilai untuk nama kluster dan nama grup sumber daya.
az aks get-credentials --resource-group myResourceGroup --name myAKSClusterCantumkan semua Pod di semua namespace menggunakan perintah kubectl get pods .
kubectl get pods --all-namespaces
Menyebarkan ke kluster yang ada
Untuk menggunakan fitur ini dengan kluster AKS yang ada, persyaratan berikut harus dipenuhi:
- Verifikasi bahwa kluster menjalankan Kubernetes versi 1.27.0 dan yang lebih tinggi.
Gunakan perintah berikut untuk mengaktifkan Pod Sandboxing dengan membuat kumpulan simpul untuk menghostingnya.
Tambahkan kumpulan simpul ke kluster AKS Anda menggunakan perintah az aks nodepool add . Tentukan parameter berikut:
- --resource-group: Masukkan nama grup sumber daya yang ada untuk membuat kluster AKS.
- --cluster-name: Masukkan nama unik untuk kluster AKS, seperti myAKSCluster.
- --name: Masukkan nama unik untuk kumpulan simpul kluster Anda, seperti nodepool2.
-
--workload-runtime: Tentukan KataVmIsolation untuk mengaktifkan fitur Pod Sandboxing pada kumpulan simpul. Seiring dengan
--workload-runtimeparameter , parameter lain ini harus memenuhi persyaratan berikut. Jika tidak, perintah gagal dan melaporkan masalah dengan parameter yang sesuai.- --os-sku: AzureLinux. Hanya os-sku Linux Azure yang mendukung fitur ini.
- --node-vm-size: Ukuran Azure VM apa pun yang merupakan VM generasi 2 dan mendukung pekerjaan virtualisasi berlapis. Misalnya, VM Dsv3 .
Contoh berikut menambahkan kumpulan simpul ke myAKSCluster dengan satu node di nodepool2 di myResourceGroup:
az aks nodepool add --cluster-name myAKSCluster --resource-group myResourceGroup --name nodepool2 --os-sku AzureLinux --workload-runtime KataVmIsolation --node-vm-size Standard_D4s_v3Jalankan perintah az aks update untuk mengaktifkan sandboxing pod pada kluster.
az aks update --name myAKSCluster --resource-group myResourceGroup
Menyebarkan aplikasi Anda
Dengan Pod Sandboxing, Anda dapat menyebarkan campuran pod "normal" yang tidak menggunakan runtime Kata, bersama dengan pod Kata yang memanfaatkan runtime tersebut. Perbedaan utama antara keduanya, ketika menyebarkan, terletak pada fakta bahwa pod Kata memiliki garis runtimeClassName: kata-vm-isolation dalam spesifikasinya.
Menyebarkan aplikasi dengan runtime Kata
Untuk menyebarkan pod dengan runtime Kata pada kluster AKS Anda, lakukan langkah-langkah berikut.
Buat file bernama kata-app.yaml untuk menjelaskan pod kata Anda, lalu tempel manifes berikut.
kind: Pod apiVersion: v1 metadata: name: isolated-pod spec: runtimeClassName: kata-vm-isolation containers: - name: kata image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]Nilai untuk runtimeClassNameSpec adalah
kata-vm-isolation.Sebarkan pod Kubernetes dengan menjalankan perintah kubectl apply dan tentukan file kata-app.yaml Anda:
kubectl apply -f kata-app.yamlHasil dari output perintah menyerupai contoh berikut:
pod/isolated-pod created
(Opsional) Memverifikasi konfigurasi Isolasi Kernel
Jika Anda ingin memverifikasi perbedaan antara kernel Pod Kata dan non-Kata, Anda dapat menjalankan beban kerja lain yang tidak menggunakan runtime Kata.
kind: Pod
apiVersion: v1
metadata:
name: normal-pod
spec:
containers:
- name: non-kata
image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
Untuk mengakses kontainer di dalam kluster AKS, mulai sesi shell dengan menjalankan perintah kubectl exec . Dalam contoh ini, Anda mengakses kontainer di dalam kata-pod.
kubectl exec -it isolated-pod -- /bin/shKubectl terhubung ke kluster Anda, menjalankan
/bin/shdi dalam kontainer pertama dariisolated-pod, dan meneruskan aliran input dan output terminal Anda ke proses yang ada di kontainer. Anda juga dapat memulai sesi shell ke kontainer yang menghosting pod non-Kata untuk melihat perbedaannya.Setelah memulai sesi shell ke kontainer dari kata-pod, Anda dapat menjalankan perintah untuk memverifikasi bahwa kontainer kata berjalan dalam sandbox pod. Perhatikan bahwa itu memiliki versi kernel yang berbeda dibandingkan dengan kontainer non-Kata di luar sandbox.
Untuk melihat versi kernel, jalankan perintah berikut:
uname -rContoh berikut menyerupai keluaran dari kernel sandbox pod:
[user]/# uname -r 6.6.96.mshv1Mulai sesi shell ke kontainer dari normal-pod untuk memverifikasi output kernel:
kubectl exec -it normal-pod -- /bin/bashUntuk melihat versi kernel, jalankan perintah berikut:
uname -rContoh berikut menyerupai output dari VM yang menjalankan normal-pod, yang memiliki kernel yang berbeda dari pod Kata yang berjalan dalam sandbox pod.
6.6.100.mshv1-1.azl3
Cleanup
Setelah selesai mengevaluasi fitur ini, untuk menghindari biaya Azure, bersihkan sumber daya yang tidak perlu. Jika Anda menyebarkan kluster baru sebagai bagian dari evaluasi atau pengujian, Anda dapat menghapus kluster menggunakan perintah az aks delete .
az aks delete --resource-group myResourceGroup --name myAKSCluster
Jika Anda menyebarkan Pod Sandboxing pada kluster yang ada, Anda dapat menghapus pod menggunakan perintah kubectl delete pod .
kubectl get pods
kubectl delete pod <kata-pod-name>
Langkah selanjutnya
- Pelajari lebih lanjut tentang Azure Dedicated hosts untuk memberikan isolasi perangkat keras dan kontrol atas peristiwa pemeliharaan platform Azure pada simpul dalam kluster AKS Anda.
- Untuk lebih menjelajahi isolasi Pod Sandboxing dan mencoba skenario beban kerja, coba lab Pod Sandboxing.