Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
AKS'de pod yalıtımı, yalıtılmış her podu kendi konuk çekirdeğine sahip hafif bir sanal makinede (VM) çalıştırmak için Kata Containers kullanır. Bu işlem sınırı, iş yükünü konak çekirdeğinden ve diğer pod VM'lerindeki iş yüklerinden ayırır. Mimari, avantajlar ve kullanım örnekleri hakkında bilgi edinmek için bkz. Azure Kubernetes Service (AKS)'da Pod korumalı alanı kullanımına genel bakış.
Bu makalede, Pod korumalı alanını yeni veya mevcut bir Azure Linux AKS kümesinde etkinleştirebilir, Kata çalışma zamanı ile bir uygulama dağıtabilir ve isteğe bağlı olarak çekirdek yalıtımını doğrulayabilirsiniz.
Önkoşullar
- Azure CLI sürüm 2.80.0 veya üzeri. Azure CLI sürümünüzü bulmak için komutunu
az --versionçalıştırın ve yükseltmek için komutunu çalıştırınaz upgrade. Daha fazla ayrıntı için Bkz. Azure CLI'yı yükleme. - AKS, Kubernetes 1.27.0 ve üzeri sürümlerde Pod yalıtımını destekler.
- Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisini
kubectlkullanın. Azure Cloud Shell ile birliktekubectlgelir. komutunu kullanarakkubectlyerel olarak yükleyebilirsinizaz aks install-cli.
Sınırlamalar
Pod yalıtımı için aşağıdaki kısıtlamalar geçerlidir:
- Kata kapsayıcıları, geleneksel kapsayıcıların Azure Dosyalar'da ve yüksek performanslı yerel SSD'de ulaşabileceği IOPS performans sınırlarına ulaşamayabilir.
- Kapsayıcılar için Microsoft Defender, Kata çalışma zamanı podlarının değerlendirilmesini desteklemez.
- Kata konak ağı erişimi desteklenmez. Vm'nin içinden konak ağ yapılandırmasına doğrudan erişemezsiniz.
- Pod korumalı alanında CPU ve bellek ayırma,
runc'den farklıdır. Her Kata podu, sabit bellek boyutu pod bellek sınırına dayalı olan veya bir sınır belirtmezseniz varsayılan olarak 512Mi olan bir pod VM'sinde çalışır. CPU sınırları pod VM'sinin vCPU ayırmasını belirler ve kesirli sınırlar bu ayırma için tüm vCPU'ya yuvarlanir. Daha fazla bilgi için Pod korumalı alanına ilişkin dikkat edilmesi gerekenler bölümüne bakın. - Pod yalıtımı yalnızca Azure Linux'ta desteklenir. Ubuntu ve Windows desteklenmez. Daha fazla bilgi için bkz. AKS için Azure Linux kapsayıcı ana bilgisayarı.
- Pod yalıtımı kullanan bir düğüm havuzunda Federal Bilgi İşleme Standardı'nı (FIPS) veya Güvenilir Başlatma'yı etkinleştiremezsiniz. Daha fazla bilgi için Pod korumalı alanına ilişkin dikkat edilmesi gerekenler bölümüne bakın.
- Pod yalıtımı kullanan bir düğüm havuzunda Arm64 mimarisi desteklenmez.
Nasıl çalışır?
AKS üzerinde pod yalıtımı, açık kaynaklı Kata Containers projesini temel alır. AKS için Azure Linux kapsayıcı konağı üzerinde çalışan Kata Kapsayıcıları, VM tabanlı yalıtım ve her pod için ayrı bir çekirdek sağlar. Pod yalıtımı, her pod için kaynak ayırmanıza olanak tanır ve bu kaynakların aynı ana bilgisayarda çalışan diğer Kata Containers veya ad alanı kapsayıcılarıyla paylaşılmamasını sağlar.
Çözüm mimarisi aşağıdaki ana bileşenleri temel alır:
- AKS için Azure Linux kapsayıcı konağı
- Microsoft Hyper-V Hipervizör
- Açık kaynak Cloud-Hypervisor Sanal Makine Yöneticisi (VMM)
- Çalışma zamanı için Kata Containers ile tümleştirme
Kata Containers kullanarak Pod yalıtımı dağıtmak, kapsayıcıları dağıtmaya yönelik standart containerd iş akışına benzer. Pod yalıtımı etkinleştirilmiş kümeler, pod manifestinde başvurabileceğiniz belirli bir çalışma zamanı sınıfıyla birlikte sunulur (runtimeClassName: kata-vm-isolation). Çalışma zamanı sınıfı varsayılanları ve özelleştirme hakkında daha fazla bilgi için bkz. Pod yalıtımı için dikkat edilmesi gerekenler.
Bu özelliği pod ile kullanmak için tek fark runtimeClassNamekata-vm-isolation değerini pod belirtimine eklemektir. Pod runtimeClass'ı kata-vm-isolation kullandığında hiper yönetici, iş yükünün çalışması için kendi çekirdeğine sahip basit bir sanal makine oluşturur.
Pod yalıtımıyla küme oluşturma
Azure CLI kullanarak bir Azure Linux AKS kümesi dağıtmak için aşağıdaki adımları gerçekleştirin.
Komutunu aşağıdaki parametrelerle çalıştırarak
az aks createbir AKS kümesi oluşturun:Parametre Gerekli değer Notlar --workload-runtimeKataVmIsolationDüğüm havuzunda Pod yalıtımını etkinleştirir. --os-skuAzureLinuxPod yalıtımı yalnızca Azure Linux işletim sistemi SKU'sunu destekler. --node-vm-sizeİç içe sanallaştırmayı destekleyen 2. nesil VM boyutu Örneğin, Dsv3 serisi VM boyutu kullanın. --node-count3Bu örnek için üç düğüm oluşturur. İş yükünüz için değeri ayarlayın. Aşağıdaki örnek, myResourceGroup'ta üç düğüme sahip myAKSCluster adlı bir küme oluşturur:
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-keysKubernetes kümesinin erişim kimlik bilgilerini almak için aşağıdaki komutu çalıştırın.
az aks get-credentialskomutunu kullanın ve küme adı ve kaynak grubu adı değerlerini değiştirin.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterkubectl get podskomutunu çalıştırarak tüm ad alanlarındaki tüm Pod’ları listeleyin.kubectl get pods --all-namespaces
Mevcut bir kümede Pod yalıtımını etkinleştirmek
Bu özelliği mevcut bir AKS kümesiyle kullanmak için aşağıdaki gereksinimlerin karşılanması gerekir:
Küme, Kubernetes sürüm 1.27.0 veya üzerini çalıştırır.
Pod korumalı alanını barındırmak üzere bir düğüm havuzu oluşturarak etkinleştirmek için aşağıdaki komutu kullanın.
Aşağıdaki parametrelerle komutunu kullanarak
az aks nodepool addAKS kümenize bir düğüm havuzu ekleyin:Parametre Gerekli değer Notlar --resource-groupMevcut AKS kümesini içeren kaynak grubu Örneğin, kullanın myResourceGroup.--cluster-nameMevcut AKS kümesinin adı Örneğin, kullanın myAKSCluster.--nameBenzersiz düğüm havuzu adı Örneğin, kullanın nodepool2.--workload-runtimeKataVmIsolationDüğüm havuzunda Pod yalıtımını etkinleştirir. --os-skuAzureLinuxPod yalıtımı yalnızca Azure Linux işletim sistemi SKU'sunu destekler. --node-vm-sizeİç içe sanallaştırmayı destekleyen 2. nesil VM boyutu Örneğin, Dsv3 serisi VM boyutu kullanın. --node-count1Bu örnek için bir düğüm oluşturur. İş yükünüz için değeri ayarlayın. Aşağıdaki örnek, myResourceGroup'ta nodepool2'debir düğümle myAKSCluster'abir düğüm havuzu ekler:
az aks nodepool add --cluster-name myAKSCluster --resource-group myResourceGroup --name nodepool2 --os-sku AzureLinux --workload-runtime KataVmIsolation --node-vm-size Standard_D4s_v3 --node-count 1Kümenin,
KataVmIsolationiş yükü çalışma zamanına sahip yeni düğüm havuzunu tanıması için küme yapılandırmasını uyumlu hale getirmek üzereaz aks updatekomutunu çalıştırın.az aks update --name myAKSCluster --resource-group myResourceGroupKüme güncelleştirmesinin başarıyla tamamlandığını ve Pod korumalı alan düğüm havuzunun beklenen iş yükü çalışma zamanı, işletim sistemi SKU'su ve VM boyutunu kullandığını doğrulayın.
az aks show \ --name myAKSCluster \ --resource-group myResourceGroup \ --query provisioningState \ --output tsv az aks nodepool show \ --cluster-name myAKSCluster \ --resource-group myResourceGroup \ --name nodepool2 \ --query "{workloadRuntime:workloadRuntime, osSKU:osSKU, vmSize:vmSize}" \ --output tableKüme hazırlama durumu
Succeededolmalıdır. Düğüm havuzu çıktısındaAzureLinux,KataVmIsolationve seçtiğiniz VM boyutu gösterilmelidir.
Pod yalıtımını kullanarak uygulamaları dağıtın
Pod yalıtımını kullanarak, Kata çalışma zamanını kullanmayan standart podları, bu çalışma zamanını kullanan Kata podlarıyla birlikte bir arada dağıtabilirsiniz. Bir Kata pod'u, pod belirtiminde runtimeClassName: kata-vm-isolation belirtir.
RuntimeClass, Kata çalışma zamanını seçer; ancak iş yüklerini belirli bir Pod yalıtımlı düğüm havuzunda çalıştırmanız gerektiğinde zamanlama kısıtlamalarını da tanımlamanız gerekir. Örneğin, bir nodeSelector içinde yerleşik AKS düğüm havuzu etiketini kullanın.
nodepool2 öğesini, Pod yalıtımı düğüm havuzunuzun adıyla değiştirin.
spec:
runtimeClassName: kata-vm-isolation
nodeSelector:
kubernetes.azure.com/agentpool: nodepool2
Daha güçlü bir ayrım için Pod korumalı alan düğümü havuzunu taint yapabilir ve Kata iş yüklerine eşleşen bir tolerans ekleyebilirsiniz. Eşleşen toleransı olmayan bir taint, diğer iş yüklerinin bu düğüm havuzunda zamanlanmasını engeller. Daha fazla bilgi için, AKS kümesinde düğüm taint’lerini kullanma bölümüne bakın.
Kata Çalışma Zamanı kullanarak uygulama dağıtımı
AKS kümenizde Kata çalışma zamanı ile bir podyu dağıtmak için aşağıdaki adımları izleyin.
Kata podunuzu açıklamak için kata-app.yaml adlı bir dosya oluşturun ve aşağıdaki bildirimi yapıştırın.
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"]runtimeClassNameiçin pod belirtim değerikata-vm-isolationşeklindedir.Komutunu çalıştırarak Kubernetes podunu dağıtın
kubectl applyve kata-app.yaml dosyanızı belirtin:kubectl apply -f kata-app.yamlKomutun çıkışı aşağıdaki örneğe benzer:
pod/isolated-pod created
Çekirdek yalıtımını doğrulama (isteğe bağlı)
- Kata ve Kata olmayan podların çekirdeklerini karşılaştırmak için normal-app.yaml adlı bir dosya oluşturun. Aşağıdaki bildirim, Kata çalışma zamanı olmadan standart bir pod tanımlar:
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"]
Standart podu
kubectl applykomutunu kullanarak dağıtın.kubectl apply -f normal-app.yamlAKS kümesi içinde bulunan bir kapsayıcıya erişmek için,
kubectl execkomutunu çalıştırarak bir kabuk oturumu başlatın. Bu örnekte, yalıtılmış pod içindeki kapsayıcıya erişiyorsunuz.kubectl exec -it isolated-pod -- /bin/shKubectl kümenize bağlanır,
/bin/shiçinde ilk kapsayıcıda çalışırisolated-pod, ve terminalinizin giriş ve çıkış akışlarını kapsayıcının işlemine iletir. Kata olmayan bir podun barındırıldığı kapsayıcıya bağlanarak bir komut satırı oturumu başlatabilir ve farkları görebilirsiniz.isolated-pod içinden kapsayıcıya bir shell oturumu başlattıktan sonra, kata kapsayıcısının bir pod sanal alanında çalıştığını doğrulamak için komutları çalıştırın. Korumalı alanın dışındaki Kata dışı kapsayıcıya kıyasla farklı bir çekirdek sürümüne sahiptir.
Çekirdek sürümünü görmek için aşağıdaki komutu çalıştırın:
uname -rAşağıdaki örnek, pod koruma alanı çekirdeğinden gelen çıkışa benzemektedir.
[user]/# uname -r 6.6.96.mshv1Normal pod'dan kapsayıcıya çekirdek çıkışını doğrulamak için bir komut satırı oturumu başlatın.
kubectl exec -it normal-pod -- /bin/bashÇekirdek sürümünü görmek için aşağıdaki komutu çalıştırın:
uname -rAşağıdaki örnek, pod sanal alanında çalışan Kata podundan farklı bir çekirdek kullanan normal pod çalıştıran VM'den alınan çıktıya benzer.
6.6.100.mshv1-1.azl3
Kaynakları temizle
Bu özelliği değerlendirmeyi bitirdiğinizde, artık Azure ücretlerden kaçınmanız gerekmeyen kaynakları temizleyin. Değerlendirmenizin veya testinizin bir parçası olarak yeni bir küme dağıttıysanız AKS kümesini silmek için aşağıdaki
az aks deletekomutu çalıştırın.az aks delete --resource-group myResourceGroup --name myAKSClusterMevcut bir kümede Pod yalıtımını dağıttıysanız,
kubectl delete podkomutunu kullanarak pod'ları kaldırabilirsiniz.kubectl get pods kubectl delete pod <kata-pod-name>Pod yalıtımlı işlem kaynaklarını kaldırmak için
az aks nodepool deletekomutunu kullanarak Kata düğüm havuzunu da silebilirsiniz. Düğüm havuzunu silmeden önce, korumak istediğiniz hiçbir iş yükünün bu düğüm havuzunda çalışmadığından emin olun.az aks nodepool delete \ --cluster-name myAKSCluster \ --resource-group myResourceGroup \ --name nodepool2
Sonraki adımlar
- Azure platformu bakım olayları üzerinde donanım yalıtımı ve kontrol sağlamak amacıyla AKS kümenizin düğümleri için Azure Ayrılmış Konaklar hakkında daha fazla bilgi edinin.
- Pod yalıtımını daha ayrıntılı incelemek ve iş yükü senaryolarını keşfetmek için Pod yalıtımı laboratuvarlarını deneyebilirsiniz.