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.
Sanal düğümler, Azure Container Instances (ACI) ve AKS kümelerinde çalışan podlar arasında ağ iletişimi sağlar. Bu iletişimi sağlamak için bir sanal ağ alt ağı oluşturur ve temsilci izinleri atarsınız. Sanal düğümler yalnızca gelişmiş ağ (Azure CNI) kullanılarak oluşturulan AKS kümeleriyle çalışır. Varsayılan olarak, AKS kümeleri temel ağ (kubenet) ile oluşturulur. Bu makalede sanal ağ ve alt ağ oluşturma ve ardından gelişmiş ağ kullanan bir AKS kümesi dağıtma işlemleri gösterilmektedir.
Bu makalede, sanal ağ kaynaklarını ve sanal düğümlerle etkinleştirilmiş bir AKS kümesini oluşturmak ve yapılandırmak için Azure CLI'yi nasıl kullanacağınız gösterilmektedir.
Başlamadan önce
Önemli
AKS ile sanal düğümleri kullanmadan önce hem AKS sanal düğümlerinin sınırlamalarını hem de ACI'nin sanal ağ sınırlamalarını gözden geçirin. Bu sınırlamalar hem AKS kümenizin hem de sanal düğümlerin konumunu, ağ yapılandırmasını ve diğer yapılandırma ayrıntılarını etkiler.
ACI hizmet sağlayıcısının aboneliğinize kayıtlı olması gerekir. komutunu kullanarak
az provider listACI sağlayıcı kaydının durumunu de kontrol edebilirsiniz.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o tableMicrosoft.ContainerInstance sağlayıcısı, aşağıdaki örnek çıktıda gösterildiği gibi Kayıtlı olarak bildirmelidir.
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequiredSağlayıcı NotRegistered olarak görünüyorsa,
az provider registerkullanarak sağlayıcıyı kaydedin.az provider register --namespace Microsoft.ContainerInstanceAzure CLI kullanılıyorsa bu makale için Azure CLI sürüm 2.0.49 veya üzeri gerekir. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. Azure Cloud Shell'i de kullanabilirsiniz.
Azure Cloud Shell'i başlatma
Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabukdur. Yaygın Azure araçları önceden yüklenmiş ve yapılandırılmıştır.
Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçin. İsterseniz https://shell.azure.com/bash adresine giderek Cloud Shell'i ayrı bir tarayıcı sekmesinde de başlatabilirsiniz. Kopyala’yı seçerek kod bloğunu kopyalayın, Cloud Shell’e yapıştırın ve Enter tuşuna basarak çalıştırın.
Kaynak grubu oluşturma
Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir gruptur.
komutunu kullanarak
az group createbir kaynak grubu oluşturun.az group create --name myResourceGroup --location eastus
Sanal ağ oluşturma
Önemli
Sanal düğüm, özel bir sanal ağ ve ilişkili alt ağ gerektirir. AKS kümesiyle aynı sanal ağ ile ilişkilendirilemiyor.
komutunu kullanarak
az network vnet createbir sanal ağ oluşturun. Aşağıdaki örnek, adres ön eki 10.0.0.0/8 olan myVnet adlı bir sanal ağ ve myAKSSubnet adlı bir alt ağ oluşturur. Bu alt ağın adres ön eki varsayılan olarak 10.240.0.0/16'dır.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16komutunu kullanarak
az network vnet subnet createsanal düğümler için ek bir alt ağ oluşturun. Aşağıdaki örnek, adres ön eki 10.241.0.0/16 olan myVirtualNodeSubnet adlı bir alt ağ oluşturur.az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16
Yönetilen kimlikle AKS kümesi oluşturma
komutunu kullanarak
az network vnet subnet showalt ağ kimliğini alın.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsvkomutunu kullanarak
az aks createbir AKS kümesi oluşturun ve değerini önceki adımda elde edilen kimlikle değiştirin<subnetId>. Aşağıdaki örnek, beş düğümlü myAKSCluster adlı bir küme oluşturur.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keysBirkaç dakika sonra komut tamamlanır ve küme hakkında JSON tarafından biçimlendirilmiş bilgiler gösterilir.
Yönetilen kimlikler hakkında daha fazla bilgi için Yönetilen kimlikleri kullanın bölümüne bakın.
Sanal düğümler eklentisini etkinleştirme
Not
Gelişmiş Ağ için Azure CNI kullanan oluşturulmuş bir Azure Kubernetes Hizmet Kümeniz varsa, CLI kullanarak sanal düğümleri eklenti olarak etkinleştirebilmeniz gerekir.
komutunu kullanarak sanal düğümleri
az aks enable-addonsetkinleştirin. Aşağıdaki örnek, önceki adımda oluşturulan myVirtualNodeSubnet adlı alt ağı kullanır.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
Yönetilen kimliğe izin ver
NODE_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
PRINCIPAL_ID=$(az identity show --resource-group $NODE_RG --name aciconnectorlinux-myAKSCluster --query principalId -o tsv)
VIRTUAL_NODE_SUBNET_ID=$(az network vnet subnet show --resource-group myResourceGroup --vnet-name <VNET_NAME> --name myVirtualNodeSubnet --query id -o tsv)
az role assignment create --assignee $PRINCIPAL_ID --role "Network Contributor" --scope $VIRTUAL_NODE_SUBNET_ID
Kümeye bağlanma
Kubernetes kümenize bağlanmak için
az aks get-credentialskomutunu kullanarakkubectlyapılandırın. Bu adım kimlik bilgilerini indirir ve Kubernetes CLI’yi bunları kullanacak şekilde yapılandırır.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterKüme düğümlerinin listesini döndüren komutunu kullanarak
kubectl getkümenize bağlantıyı doğrulayın.kubectl get nodesAşağıdaki örnek çıktıda oluşturulan tek VM düğümü ve Linux için sanal düğüm, virtual-node-aci-linux gösterilmektedir:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
Örnek uygulama dağıtın
adlı
virtual-node.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. YAML, nodeSelector ve toleration tanımlayarak düğümdeki kapsayıcıyı zamanlayan.apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists - key: azure.com/aci effect: NoSchedulekomutunu kullanarak
kubectl applyuygulamayı çalıştırın.kubectl apply -f virtual-node.yamlkubectl get podskomutunu-o widebağımsız değişkeni ile kullanarak podların ve zamanlanmış düğümün listesini alın.kubectl get pods -o widePod, aşağıdaki örnek çıktıda gösterildiği gibi virtual-node-aci-linux sanal düğümüne zamanlanmıştır.
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linuxPoda, sanal düğümlerle kullanılmak üzere kullanıma yetkilendirilmiş Azure sanal ağının alt ağından bir iç IP adresi atanır.
Not
Azure Container Registry'de depolanan görüntüleri kullanıyorsanız Kubernetes gizli anahtarını yapılandırın ve kullanın. Sanal düğümlerin mevcut kısıtlamalarından biri, bütünleşik Microsoft Entra hizmet sorumlusu kimlik doğrulamasını kullanamamanızdır. Gizli bir bilgi kullanmazsanız, sanal düğümlerde zamanlanan podlar başlatılamaz ve HTTP response status code 400 error code "InaccessibleImage" hatasını bildirir.
Sanal düğüm podunu test edin
Bir web istemcisiyle tanıtım uygulamasına göz atarak sanal düğümde çalışan podu test edin. Pod'a bir iç IP adresi atandığından, AKS kümesindeki başka bir poddan bu bağlantıyı hızla test edebilirsiniz.
Aşağıdaki
kubectl run -itkomutu kullanarak bir test podu oluşturun ve buna bir terminal oturumu ekleyin.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0kullanarak
curlpod'a yükleyinapt-get.apt-get update && apt-get install -y curlgibi
curlkullanarak http://10.241.0.4podunuzun adresine erişin. Öncekikubectl get podskomutta gösterilen kendi iç IP adresinizi belirtin.curl -L http://10.241.0.4Tanıtım uygulaması, aşağıdaki daraltılmış örnek çıktıda gösterildiği gibi görüntülenir:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]Terminal oturumunuzu test podunuzda
exitile kapatın. Oturumunuz sona erdiğinde pod silinir.
Sanal düğümleri kaldırma
kubectl deletekomutunu kullanarak sanal düğümde çalışanaci-helloworldpodu silin.kubectl delete -f virtual-node.yamlkomutunu kullanarak sanal düğümleri
az aks disable-addonsdevre dışı bırakın.az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-nodeAşağıdaki komutları kullanarak sanal ağ kaynaklarını ve kaynak grubunu kaldırın.
# Change the name of your resource group, cluster and network resources as needed RES_GROUP=myResourceGroup AKS_CLUSTER=myAKScluster AKS_VNET=myVnet AKS_SUBNET=myVirtualNodeSubnet # Get AKS node resource group NODE_RES_GROUP=$(az aks show --resource-group $RES_GROUP --name $AKS_CLUSTER --query nodeResourceGroup --output tsv) # Get network profile ID NETWORK_PROFILE_ID=$(az network profile list --resource-group $NODE_RES_GROUP --query "[0].id" --output tsv) # Delete the network profile az network profile delete --id $NETWORK_PROFILE_ID -y # Grab the service association link ID SAL_ID=$(az network vnet subnet show --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --query id --output tsv)/providers/Microsoft.ContainerInstance/serviceAssociationLinks/default # Delete the service association link for the subnet az resource delete --ids $SAL_ID --api-version 2021-10-01 # Delete the subnet delegation to Azure Container Instances az network vnet subnet update --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --remove delegations
Sonraki adımlar
Bu makalede, sanal düğümde bir pod zamanladınız ve özel bir iç IP adresi atadınız. Bunun yerine bir hizmet dağıtımı oluşturabilir ve trafiği bir yük dengeleyici veya giriş denetleyicisi aracılığıyla podunuza yönlendirebilirsiniz. Daha fazla bilgi için bkz . AKS'de temel giriş denetleyicisi oluşturma.
Sanal düğümler genellikle AKS'deki bir ölçeklendirme çözümünün bileşenlerinden biridir. Çözümleri ölçeklendirme hakkında daha fazla bilgi için aşağıdaki makalelere bakın: