Azure CLI kullanarak sanal düğümleri kullanmak için Azure Kubernetes Services (AKS) kümesi oluşturma ve yapılandırma
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 list
ACI sağlayıcı kaydının durumunu de kontrol edebilirsiniz.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
Microsoft.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 RegistrationRequired
Sağlayıcı NotRegistered olarak görünüyorsa, kullanarak sağlayıcıyı
az provider register
kaydedin.az provider register --namespace Microsoft.ContainerInstance
Azure 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 --version
komutunu ç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 create
bir 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 create
bir 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/16
komutunu kullanarak
az network vnet subnet create
sanal 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 show
alt ağ kimliğini alın.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsv
komutunu kullanarak
az aks create
bir 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-keys
Birkaç 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 bkz . Yönetilen kimlikleri kullanma.
Sanal düğümler eklentisini etkinleştirme
komutunu kullanarak sanal düğümleri
az aks enable-addons
etkinleş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
Kümeye bağlanma
komutunu kullanarak Kubernetes kümenize bağlanacak şekilde
az aks get-credentials
yapılandırınkubectl
. 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 myAKSCluster
Küme düğümlerinin listesini döndüren komutunu kullanarak
kubectl get
kümenize bağlantıyı doğrulayın.kubectl get nodes
Aş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ğıtma
adlı
virtual-node.yaml
bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. YAML, nodeSelector ve toleration tanımlayarak düğümdeki kapsayıcıyı zamanlar.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 beta.kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists - key: azure.com/aci effect: NoSchedule
komutunu kullanarak
kubectl apply
uygulamayı çalıştırın.kubectl apply -f virtual-node.yaml
bağımsız değişkeniyle komutunu kullanarak podların ve zamanlanmış düğümün
kubectl get pods
-o wide
listesini alın.kubectl get pods -o wide
Pod, aşağıdaki örnek çıktıda gösterildiği gibi virtual-node-aci-linux sanal düğümünde zamanlanır:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
Pod' a, sanal düğümlerle kullanılmak üzere temsilci olarak atanan Azure sanal ağ alt ağından bir iç IP adresi atanır.
Not
Azure Container Registry'de depolanan görüntüleri kullanıyorsanız kubernetes gizli dizisini yapılandırın ve kullanın. Sanal düğümlerin geçerli sınırlamalarından biri, tümleşik Microsoft Entra hizmet sorumlusu kimlik doğrulamayı kullanamamanızdır. Gizli dizi kullanmazsanız, sanal düğümlerde zamanlanan podlar başlatılamaz ve hatasını HTTP response status code 400 error code "InaccessibleImage"
bildiremez.
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 -it
komutu 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.0
kullanarak
apt-get
pod'a yükleyincurl
.apt-get update && apt-get install -y curl
gibi http://10.241.0.4kullanarak
curl
podunuzun adresine erişin. Öncekikubectl get pods
komutta gösterilen kendi iç IP adresinizi belirtin.curl -L http://10.241.0.4
Tanı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> [...]
ile
exit
test podunuza terminal oturumunu kapatın. Oturumunuz sona erdiğinde pod silinir.
Sanal düğümleri kaldırma
aci-helloworld
komutunu kullanarak sanal düğümde çalışan podukubectl delete
silin.kubectl delete -f virtual-node.yaml
komutunu kullanarak sanal düğümleri
az aks disable-addons
devre dışı bırakın.az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-node
Aş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ıysanız ve özel bir iç IP adresi atadıysanı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:
Azure Kubernetes Service