Azure Kubernetes Service (AKS) ile Pod Korumalı Alanı (önizleme)
Kapsayıcı iş yüklerinizi güvenilmeyen veya kötü amaçlı olabilecek kodlardan korumaya yardımcı olmak için AKS artık Pod Korumalı Alanı (önizleme) adlı bir mekanizma içeriyor. Pod Korumalı Alanı, kapsayıcı uygulaması ile kapsayıcı konağın paylaşılan çekirdek ve işlem kaynakları arasında bir yalıtım sınırı sağlar. Örneğin CPU, bellek ve ağ. Pod Korumalı Alanı, hassas bilgilerin güvenliğini sağlamaya yönelik mevzuat, sektör veya idare uyumluluğu gereksinimlerini karşılamanıza yardımcı olmak için diğer güvenlik önlemlerini veya veri koruma denetimlerini genel mimarinizle tamamlar.
Bu makale, bu yeni özelliği anlamanıza ve nasıl uygulayabileceğinize yardımcı olur.
Önkoşullar
Azure CLI sürüm 2.44.1 veya üzeri. Sürümü bulmak için komutunu
az --version
çalıştırın ve sürümü yükseltmek için komutunu çalıştırınaz upgrade
. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.aks-preview
Azure CLI uzantısı sürüm 0.5.123 veya üzeri.KataVMIsolationPreview
Özelliği Azure aboneliğinize kaydedin.AKS, tüm AKS ağ eklentileriyle 1.24.0 ve üzeri sürümlerde Pod Korumalı Alanını (önizleme) destekler.
Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisi kubectl'yi kullanın. Azure Cloud Shell ile birlikte
kubectl
gelir. az aks install-cli komutunu kullanarak kubectl'yi yerel olarak yükleyebilirsiniz.
aks-preview Azure CLI uzantısını yükleme
Önemli
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
aks-preview uzantısını yüklemek için aşağıdaki komutu çalıştırın:
az extension add --name aks-preview
Yayımlanan uzantının en son sürümüne güncelleştirmek için aşağıdaki komutu çalıştırın:
az extension update --name aks-preview
KataVMIsolationPreview özellik bayrağını kaydetme
KataVMIsolationPreview
Aşağıdaki örnekte gösterildiği gibi az feature register komutunu kullanarak özellik bayrağını kaydedin:
az feature register --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer. az feature show komutunu kullanarak kayıt durumunu doğrulayın:
az feature show --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"
Durum Kayıtlı olarak gösterildiğinde az provider register komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin:
az provider register --namespace "Microsoft.ContainerService"
Sınırlamalar
Pod Korumalı Alanı'nın (önizleme) bu önizlemesiyle ilgili kısıtlamalar şunlardır:
Kata kapsayıcıları, geleneksel kapsayıcıların Azure Dosyalar 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ğı desteklenmez.
AKS, bu önizleme sürümünde Kapsayıcı Depolama Arabirimi sürücülerini ve Gizli Dizi Deposu CSI sürücüsünü desteklemez.
Nasıl çalışır?
AKS'de bu işlevi elde etmek için, AKS yığını için Azure Linux kapsayıcı konağı üzerinde çalışan Kata Kapsayıcıları donanım tarafından zorlanan yalıtım sağlar. Pod Korumalı Alanı, her Kata podu için ayrı bir çekirdek gibi donanım yalıtımının avantajlarını genişletir. Donanım yalıtımı her pod için kaynak ayırır ve bunları aynı konakta çalışan diğer Kata Kapsayıcıları veya ad alanı kapsayıcılarıyla paylaşmaz.
Çözüm mimarisi aşağıdaki bileşenleri temel alır:
- AKS için Azure Linux kapsayıcı konağı
- Microsoft Hyper-V Hiper Yöneticisi
- Azure tarafından ayarlanmış Dom0 Linux Çekirdeği
- Açık kaynak Bulut Hiper Yönetici Sanal Makine İzleyicisi (VMM)
- Kata Container framework ile tümleştirme
Kata Kapsayıcıları kullanarak Pod Korumalı Alanı dağıtma, kapsayıcıları dağıtmak için standart kapsayıcılı iş akışına benzer. Dağıtım, pod şablonunda tanımlayabileceğiniz kata-runtime seçeneklerini içerir.
Bu özelliği pod ile kullanmak için tek fark pod belirtimine runtimeClassName kata-mshv-vm-isolation eklemektir.
Pod kata-mshv-vm-isolation runtimeClass kullandığında, kapsayıcıları barındırmak için pod korumalı alanı olarak hizmet vermek üzere bir VM oluşturur. Kapsayıcı kaynak bildirimi (containers[].resources.limits
) CPU ve bellek için bir sınır belirtmiyorsa VM'nin varsayılan belleği 2 GB'tır ve varsayılan CPU bir çekirdektir. Kapsayıcı kaynak bildiriminde CPU veya bellek için bir sınır belirttiğinizde, VM bir containers[].resources.limits.cpu
+ xCPU kullanmak için bağımsız değişkenini ve 2
containers[].resources.limits.memory
2 GB + yMemory belirtmek için bağımsız değişkenini kullanır.1
Kapsayıcılar yalnızca kapsayıcıların sınırları için CPU ve bellek kullanabilir. containers[].resources.requests
cpu ve bellek ek yükünü azaltmak için çalışırken bu önizlemede yok sayılır.
Yeni küme dağıtma
Azure CLI kullanarak bir Azure Linux AKS kümesi dağıtmak için aşağıdaki adımları gerçekleştirin.
az aks create komutunu kullanarak ve aşağıdaki parametreleri belirterek bir AKS kümesi oluşturun:
- --workload-runtime: Düğüm havuzunda Pod Korumalı Alanı özelliğini etkinleştirmek için KataMshvVmIsolation değerini belirtin. Bu parametre ile, bu diğer parametreler aşağıdaki gereksinimleri karşılamalıdır. Aksi takdirde, komut başarısız olur ve ilgili parametrelerle ilgili bir sorun bildirir.
- --os-sku: AzureLinux. Bu önizleme sürümünde bu özelliği yalnızca Azure Linux os-sku destekler.
- --node-vm-size: 2. nesil vm olan ve iç içe sanallaştırmayı destekleyen tüm Azure VM boyutları çalışır. Örneğin, Dsv3 VM'leri.
Aşağıdaki örnek, myResourceGroup'ta bir düğüme sahip myAKSCluster adlı bir küme oluşturur:
az aks create --name myAKSCluster \ --resource-group myResourceGroup \ --os-sku AzureLinux \ --workload-runtime KataMshvVmIsolation \ --node-vm-size Standard_D4s_v3 \ --node-count 1 \ --generate-ssh-keys
Kubernetes kümesinin erişim kimlik bilgilerini almak için aşağıdaki komutu çalıştırın. az aks get-credentials komutunu kullanın ve küme adı ile kaynak grubu adı değerlerini değiştirin.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get pods komutunu kullanarak tüm ad alanları içindeki tüm Podları listeleyin .
kubectl get pods --all-namespaces
Mevcut kümeye dağıtma
Bu özelliği mevcut bir AKS kümesiyle kullanmak için aşağıdaki gereksinimlerin karşılanması gerekir:
- KataVMIsolationPreview özellik bayrağını kaydetmek için adımları izleyin.
- Kümenin Kubernetes sürüm 1.24.0 ve üzerini çalıştırdığını doğrulayın.
Barındırmak için bir düğüm havuzu oluşturarak Pod Korumalı Alanı'nı (önizleme) etkinleştirmek için aşağıdaki komutu kullanın.
az aks nodepool add komutunu kullanarak AKS kümenize düğüm havuzu ekleyin . Aşağıdaki parametreleri belirtin:
- --resource-group: AKS kümesinin oluşturulacağı mevcut kaynak grubunun adını girin.
- --cluster-name: AKS kümesi için myAKSCluster gibi benzersiz bir ad girin.
- --name: Küme düğüm havuzunuz için nodepool2 gibi benzersiz bir ad girin.
- --workload-runtime: Düğüm havuzunda Pod Korumalı Alanı özelliğini etkinleştirmek için KataMshvVmIsolation değerini belirtin. Parametresiyle
--workload-runtime
birlikte, bu diğer parametreler aşağıdaki gereksinimleri karşılamalıdır. Aksi takdirde, komut başarısız olur ve ilgili parametrelerle ilgili bir sorun bildirir.- --os-sku: AzureLinux. Önizleme sürümünde bu özelliği yalnızca Azure Linux os-sku destekler.
- --node-vm-size: 2. nesil vm olan ve iç içe sanallaştırmayı destekleyen tüm Azure VM boyutları çalışır. Örneğin, Dsv3 VM'leri.
Aşağıdaki örnek, myResourceGroup'ta nodepool2'de bir düğümle myAKSCluster'a bir düğüm havuzu ekler:
az aks nodepool add --cluster-name myAKSCluster --resource-group myResourceGroup --name nodepool2 --os-sku AzureLinux --workload-runtime KataMshvVmIsolation --node-vm-size Standard_D4s_v3
Kümede pod korumalı alanını (önizleme) etkinleştirmek için az aks update komutunu çalıştırın.
az aks update --name myAKSCluster --resource-group myResourceGroup
Güvenilen uygulama dağıtma
AKS kümesindeki paylaşılan çekirdekte güvenilen bir uygulamanın dağıtımını göstermek için aşağıdaki adımları gerçekleştirin.
Güvenilen podu açıklamak için trusted-app.yaml adlı bir dosya oluşturun ve aşağıdaki bildirimi yapıştırın.
kind: Pod apiVersion: v1 metadata: name: trusted spec: containers: - name: trusted image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
kubectl apply komutunu çalıştırarak Kubernetes podunu dağıtın ve trusted-app.yaml dosyanızı belirtin:
kubectl apply -f trusted-app.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
pod/trusted created
Güvenilmeyen bir uygulama dağıtma
Güvenilmeyen bir uygulamanın AKS kümesindeki pod korumalı alanına dağıtımını göstermek için aşağıdaki adımları gerçekleştirin.
Güvenilmeyen bir podu açıklamak için untrusted-app.yaml adlı bir dosya oluşturun ve aşağıdaki bildirimi yapıştırın.
kind: Pod apiVersion: v1 metadata: name: untrusted spec: runtimeClassName: kata-mshv-vm-isolation containers: - name: untrusted image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
runtimeClassNameSpec değeridir.
kata-mhsv-vm-isolation
kubectl apply komutunu çalıştırarak Kubernetes podunu dağıtın ve untrusted-app.yaml dosyanızı belirtin:
kubectl apply -f untrusted-app.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
pod/untrusted created
Çekirdek Yalıtımı yapılandırmasını doğrulama
AKS kümesinin içindeki bir kapsayıcıya erişmek için kubectl exec komutunu çalıştırarak bir kabuk oturumu başlatın. Bu örnekte, güvenilmeyen pod içindeki kapsayıcıya erişmiş olursunuz.
kubectl exec -it untrusted -- /bin/bash
Kubectl kümenize bağlanır, güvenilmeyen pod içindeki ilk kapsayıcıda çalışır
/bin/sh
ve terminalinizin giriş ve çıkış akışlarını kapsayıcının işlemine iletir. Güvenilen podu barındıran kapsayıcıda kabuk oturumu da başlatabilirsiniz.Güvenilmeyen pod kapsayıcısında kabuk oturumu başlattıktan sonra, güvenilmeyen kapsayıcının pod korumalı alanında çalıştığını doğrulamak için komutları çalıştırabilirsiniz. Korumalı alanın dışındaki güvenilen kapsayıcıya kıyasla farklı bir çekirdek sürümüne sahip olduğunu fark edeceksiniz.
Çekirdek sürümünü görmek için aşağıdaki komutu çalıştırın:
uname -r
Aşağıdaki örnek pod korumalı alan çekirdeğinin çıkışına benzer:
root@untrusted:/# uname -r 5.15.48.1-8.cm2
Çekirdek çıkışını doğrulamak için güvenilen pod kapsayıcısına bir kabuk oturumu başlatın:
kubectl exec -it trusted -- /bin/bash
Çekirdek sürümünü görmek için aşağıdaki komutu çalıştırın:
uname -r
Aşağıdaki örnek, pod korumalı alanında çalışan güvenilmeyen poddan farklı bir çekirdek olan güvenilen podu çalıştıran VM'den alınan çıkışa benzer:
5.15.80.mshv2-hvl1.m2
Temizleme
Bu özelliği değerlendirmeyi bitirdiğinizde Azure ücretlerinden kaçınmak için gereksiz kaynaklarınızı temizleyin. Değerlendirme veya test kapsamında yeni bir küme dağıttıysanız az aks delete komutunu kullanarak kümeyi silebilirsiniz .
az aks delete --resource-group myResourceGroup --name myAKSCluster
Mevcut bir kümede Pod Korumalı Alanı'nı (önizleme) etkinleştirdiyseniz kubectl delete pod komutunu kullanarak podları kaldırabilirsiniz.
kubectl delete pod pod-name
Sonraki adımlar
Donanım yalıtımını kullanmak ve Azure platformu bakım olayları üzerinde denetim sağlamak üzere AKS kümenize sahip düğümler için Azure Ayrılmış konakları hakkında daha fazla bilgi edinin.
Azure Kubernetes Service