Azure Kubernetes Services- (AKS-) fürt létrehozása és konfigurálása virtuális csomópontok Azure CLI használatával történő használatára
A virtuális csomópontok lehetővé teszik az Azure Container Instancesben (ACI) és az AKS-fürtökben futó podok közötti hálózati kommunikációt. A kommunikáció biztosításához létre kell hoznia egy virtuális hálózati alhálózatot, és delegált engedélyeket kell hozzárendelnie. A virtuális csomópontok csak speciális hálózatkezeléssel (Azure CNI) létrehozott AKS-fürtökkel működnek. Alapértelmezés szerint az AKS-fürtök alapszintű hálózatkezeléssel (kubenet) jönnek létre. Ez a cikk bemutatja, hogyan hozhat létre virtuális hálózatot és alhálózatokat, majd hogyan helyezhet üzembe speciális hálózatkezelést használó AKS-fürtöt.
Ez a cikk bemutatja, hogyan hozhat létre és konfigurálhat virtuális hálózati erőforrásokat és virtuális csomópontokkal engedélyezett AKS-fürtöt az Azure CLI használatával.
Mielőtt elkezdené
Fontos
Mielőtt virtuális csomópontokat használ az AKS-sel, tekintse át az AKS virtuális csomópontjainak korlátozásait és az ACI virtuális hálózatkezelési korlátait. Ezek a korlátozások mind az AKS-fürt, mind a virtuális csomópontok helyét, hálózati konfigurációját és egyéb konfigurációs adatait érintik.
Szüksége van az előfizetésében regisztrált ACI-szolgáltatóra. Az ACI-szolgáltató regisztrációjának állapotát a
az provider list
paranccsal ellenőrizheti.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
A Microsoft.ContainerInstance szolgáltatónak regisztráltként kell jelentenie a következő példakimenetben látható módon:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequired
Ha a szolgáltató nem regisztráltként jelenik meg, regisztrálja a szolgáltatót a
az provider register
.az provider register --namespace Microsoft.ContainerInstance
Az Azure CLI használata esetén ez a cikk az Azure CLI 2.0.49-es vagy újabb verzióját igényli. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése. Az Azure Cloud Shellt is használhatja.
Az Azure Cloud Shell elindítása
Az Azure Cloud Shell egy ingyenes interaktív rendszerhéj, a cikk lépéseinek futtatásához. Gyakran telepített és konfigurált Azure-eszközökkel rendelkezik.
A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget a kódblokk jobb felső sarkában. A Cloud Shellt egy külön böngészőlapon is elindíthatja a https://shell.azure.com/bash cím megnyitásával. A Copy (másolás) gombra kattintva másolja és illessze be a kódot a Cloud Shellbe, majd nyomja le az Enter billentyűt a futtatáshoz.
Erőforráscsoport létrehozása
Az Azure-erőforráscsoport olyan logikai csoport, amelyben az Azure-erőforrások üzembe helyezése és kezelése zajlik.
Hozzon létre egy erőforráscsoportot a
az group create
paranccsal.az group create --name myResourceGroup --location eastus
Virtuális hálózat létrehozása
Fontos
A virtuális csomóponthoz egyéni virtuális hálózat és társított alhálózat szükséges. Nem társítható ugyanahhoz a virtuális hálózathoz, mint az AKS-fürt.
Hozzon létre egy virtuális hálózatot a
az network vnet create
paranccsal. Az alábbi példa egy myVnet nevű virtuális hálózatot hoz létre a 10.0.0.0/8 címelőtaggal és egy myAKSSubnet nevű alhálózattal. Az alhálózat címelőtagja alapértelmezés szerint 10.240.0.0/16.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
Hozzon létre egy további alhálózatot a virtuális csomópontokhoz a
az network vnet subnet create
parancs használatával. Az alábbi példa létrehoz egy myVirtualNodeSubnet nevű alhálózatot a 10.241.0.0/16 címelőtaggal.az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16
AKS-fürt létrehozása felügyelt identitással
Kérje le az alhálózat azonosítóját a
az network vnet subnet show
paranccsal.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsv
Hozzon létre egy AKS-fürtöt a
az aks create
paranccsal, és cserélje le<subnetId>
az előző lépésben beszerzett azonosítóra. Az alábbi példa egy myAKSCluster nevű fürtöt hoz létre öt csomóponttal.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keys
Néhány perc múlva befejeződik a parancs végrehajtása, és visszaadja a fürttel kapcsolatos adatokat JSON formátumban.
A felügyelt identitásokról további információt a Felügyelt identitások használata című témakörben talál.
A virtuális csomópontok bővítményének engedélyezése
Feljegyzés
Ha már létrehozott egy meglévő Azure Kubernetes Service-fürtöt, amely az Azure CNI-t használja a speciális hálózatkezeléshez, engedélyeznie kell a virtuális csomópontokat bővítményként a parancssori felület használatával.
Virtuális csomópontok engedélyezése a
az aks enable-addons
parancs használatával. Az alábbi példa az előző lépésben létrehozott myVirtualNodeSubnet alhálózatot használja.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
Csatlakozás a fürthöz
Konfigurálja
kubectl
a Kubernetes-fürthöz való csatlakozást aaz aks get-credentials
paranccsal. Ebben a lépésben a rendszer hitelesítő adatokat tölt le, és konfigurálja a Kubernetes parancssori felületét azok használatára.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Ellenőrizze a fürthöz való kapcsolatot a
kubectl get
parancs használatával, amely a fürtcsomópontok listáját adja vissza.kubectl get nodes
Az alábbi példakimenet a létrehozott egyetlen virtuálisgép-csomópontot és a Linuxhoz készült virtuális csomópontot, a virtual-node-aci-linuxot mutatja be:
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
Mintaalkalmazás üzembe helyezése
Hozzon létre egy fájlt,
virtual-node.yaml
és másolja a következő YAML-fájlba. A YAML egy nodeSelector és toleration definiálásával ütemezi a tárolót a csomóponton.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
Futtassa az alkalmazást a
kubectl apply
paranccsal.kubectl apply -f virtual-node.yaml
Lekérheti a podok és az ütemezett csomópontok listáját az
kubectl get pods
argumentumot tartalmazó-o wide
paranccsal.kubectl get pods -o wide
A pod ütemezése a virtual-node-aci-linux virtuális csomóponton történik, ahogyan az alábbi példakimenetben látható:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
A podhoz egy belső IP-cím van hozzárendelve a virtuális csomópontokkal való használatra delegált Azure-beli virtuális hálózati alhálózatból.
Feljegyzés
Ha az Azure Container Registryben tárolt rendszerképeket használ, konfiguráljon és használjon Kubernetes-titkos kulcsot. A virtuális csomópontok jelenlegi korlátozása, hogy nem használhatja az integrált Microsoft Entra szolgáltatásnév-hitelesítést. Ha nem használ titkos kulcsot, a virtuális csomópontokon ütemezett podok nem indulnak el, és nem jelentik a hibát HTTP response status code 400 error code "InaccessibleImage"
.
A virtuális csomópont podjának tesztelése
Tesztelje a virtuális csomóponton futó podot a bemutató alkalmazás webügyféllel való böngészésével. Mivel a podhoz belső IP-cím van rendelve, gyorsan tesztelheti ezt a kapcsolatot az AKS-fürt egy másik podjáról.
Hozzon létre egy teszt podot, és csatoljon hozzá egy terminál munkamenetet az alábbi
kubectl run -it
paranccsal.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Telepítés
curl
a podban a következő használatávalapt-get
: .apt-get update && apt-get install -y curl
A pod címének elérése például http://10.241.0.4a .
curl
Adja meg az előzőkubectl get pods
parancsban látható saját belső IP-címét.curl -L http://10.241.0.4
Megjelenik a bemutató alkalmazás, ahogyan az alábbi sűrített példakimenetben is látható:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]
Zárja be a terminál munkamenetet a teszt podhoz a következővel
exit
: . Amikor a munkamenet véget ér, a pod törlődik.
Virtuális csomópontok eltávolítása
Törölje a
aci-helloworld
virtuális csomóponton futó podot akubectl delete
paranccsal.kubectl delete -f virtual-node.yaml
Tiltsa le a virtuális csomópontokat a
az aks disable-addons
paranccsal.az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-node
Távolítsa el a virtuális hálózati erőforrásokat és erőforráscsoportot az alábbi parancsokkal.
# 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
Következő lépések
Ebben a cikkben egy podot ütemezett a virtuális csomópontra, és hozzárendelt egy privát belső IP-címet. Ehelyett létrehozhat egy szolgáltatástelepítést, és egy terheléselosztón vagy bejövőforgalom-vezérlőn keresztül irányíthatja a forgalmat a podra. További információ: Alapszintű bejövőforgalom-vezérlő létrehozása az AKS-ben.
A virtuális csomópontok gyakran az AKS skálázási megoldásának egyik összetevője. A skálázási megoldásokkal kapcsolatos további információkért tekintse meg az alábbi cikkeket:
Azure Kubernetes Service