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.

Előkészületek

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.

  1. 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
    
  2. 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

  1. 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
    
  2. 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>
    

    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

  • 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

  1. Konfigurálja kubectl a Kubernetes-fürthöz való csatlakozást a az 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
    
  2. 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

  1. 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
    
  2. Futtassa az alkalmazást a kubectl apply paranccsal.

    kubectl apply -f virtual-node.yaml
    
  3. 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.

Megjegyzé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

  1. 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.

  2. 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
    
  3. Telepítés curl a podban a következő használatával apt-get: .

    apt-get update && apt-get install -y curl
    
  4. 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>
    [...]
    
  5. 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

  1. Törölje a aci-helloworld virtuális csomóponton futó podot a kubectl delete paranccsal.

    kubectl delete -f virtual-node.yaml
    
  2. 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
    
  3. 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: