Gyakorlat – A Kubernetes üzembe helyezése az Azure Kubernetes szolgáltatással

Befejeződött

A Fruit Smoothies a Kubernetest szeretné számítási platformként használni. A fejlesztői csapatok eddig is tárolókat használtak az alkalmazásfejlesztéshez és az üzembe helyezéshez, egy vezénylési platformmal pedig még gyorsabban fejleszthetnek, szállíthatnak és méretezhetnek alkalmazásokat.

Ehhez üzembe kell helyezni a Kubernetes-környezet alapjait.

Ebben a gyakorlatban a következőket fogja végrehajtani:

  • Új erőforráscsoport létrehozása.
  • A fürt hálózatkezelésének konfigurálása.
  • Egy Azure Kubernetes Service-fürt létrehozása.
  • Csatlakozás a Kubernetes-fürthöz a kubectl segítségével.
  • Kubernetes-névtér létrehozása.

Fontos

Ennek a gyakorlatnak az elvégzéséhez saját Azure-előfizetés szükséges, amely költségekkel járhat. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot.

Új erőforráscsoport létrehozása

Elsőként létre kell hoznia egy erőforráscsoportot, amelyben üzembe helyezheti az erőforrásokat.

  1. Jelentkezzen be az Azure Cloud Shellbe az Azure-fiókjával. Használja a Cloud Shell Bash verzióját.

  2. Az üzembe helyezési szkriptekben újra felhasználunk néhány értéket. Ki kell választania például egy régiót, amelyben létre kíván hozni egy erőforráscsoportot, például: az USA keleti régiója. Ha más értéket választ, jegyezze fel a modulban elvégzendő többi gyakorlathoz. Előfordulhat, hogy a Cloud Shell-munkamenetek között újra kell definiálnia az értéket. Az alábbi parancsokkal rögzítse ezeket az értékeket Bash-változókban.

    REGION_NAME=eastus
    RESOURCE_GROUP=aksworkshop
    SUBNET_NAME=aks-subnet
    VNET_NAME=aks-vnet
    

    Tipp

    A Másolás gombbal a vágólapra másolhatja a parancsokat. A beillesztéshez kattintson a jobb gombbal egy új sorra a Cloud Shell ablakban, és válassza a Beillesztés lehetőséget, vagy használja a Shift+Insert billentyűparancsot (macOS rendszeren ⌘+V).

    Az egyes értékeket au echo parancs használatával ellenőrizheti, például echo $REGION_NAME.

  3. Hozzon létre egy új erőforráscsoportot aksworkshop néven. Helyezze üzembe az ezekben a gyakorlatokban létrehozott összes erőforrást ebben az erőforráscsoportban. Ha egyetlen erőforráscsoportot használ, könnyebben eltávolíthatja az erőforrásokat a modul befejezése után.

    az group create \
        --name $RESOURCE_GROUP \
        --location $REGION_NAME
    

Hálózatkezelés beállítása

Egy AKS-fürt üzembe helyezésekor két hálózati modell közül választhat. Az első modell a Kubenet-hálózatkezelés, a második pedig az Azure Container Network Interface- (CN-I) hálózatkezelés.

Mi az a Kubenet-hálózatkezelés?

A Kubenet-hálózatkezelés az alapértelmezett hálózati modell a Kubernetes-ben. A Kubenet-hálózatkezelés használata esetén a csomópontok az Azure-beli virtuális hálózat alhálózatáról kapnak IP-címet. A podok IP-címe a csomópontok Azure-beli virtuális hálózati alhálózatától logikailag eltérő címtérből származik.

A hálózati címfordítás (NAT) konfigurálása lehetővé teszi, hogy a podok hozzáférjenek az Azure-beli virtuális hálózat erőforrásaihoz. A rendszer a forgalom forrás IP-címét a csomópont elsődleges IP-címére fordítja le, majd a csomópontokon konfiguráltra. A podok egy, a csomópont IP-címe mögött „rejtőző” IP-címet kapnak.

Mi az Azure Container Networking Interface- (CNI-) hálózatkezelés?

Az Azure Container Network Interface (CNI) esetén az AKS-fürt a meglévő virtuális hálózati erőforrásokhoz és konfigurációkhoz csatlakozik. Ebben a hálózatkezelési modellben minden pod kap egy IP-címet az alhálózatból, és közvetlenül elérhetővé válik. Ezeknek az IP-címeknek egyedinek kell lenniük a hálózati területen, és előzetesen kell őket kiszámítani.

Egyes használni kívánt funkciók megkövetelik, hogy az AKS-fürtöt az Azure Container Networking Interface hálózatkezelési konfigurációjának használatával telepítse.

Részletesebb összehasonlítást a modul végén található További információ” című szakaszban találhat.

Hozzuk létre az AKS-fürt virtuális hálózatát. Ezzel a hálózattal adjuk meg a fürt üzembe helyezésekor a hálózatkezelési modellt.

  1. Elsőként hozzon létre egy virtuális hálózatot és egy alhálózatot. A fürtön üzembe helyezett podok IP-címe ebből az alhálózatból lesz kiosztva. A virtuális hálózat létrehozásához futtassa a következő parancsot.

    az network vnet create \
        --resource-group $RESOURCE_GROUP \
        --location $REGION_NAME \
        --name $VNET_NAME \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name $SUBNET_NAME \
        --subnet-prefixes 10.240.0.0/16
    
  2. Ezután a következő parancs futtatásával olvassa be és tárolja az alhálózat azonosítóját egy Bash-változóban.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --query id -o tsv)
    

Az AKS-fürt létrehozása

Most, hogy megvan az új virtuális hálózat, létrehozhatja az új fürtöt. Az az aks create parancs futtatása előtt két értéket kell tudnia. Az első a kiválasztott régióban elérhető legújabb, nem előzetes verziós Kubernetes-verzió, a második pedig a fürt egyedi neve.

  1. A legújabb, nem előzetes verziójú Kubernetes-verziót az paranccsal lehet az aks get-versions lekérte. Tárolja a parancs által visszaadott értéket egy VERSION nevű Bash-változóban. Futtassa a következő parancsot a verziószám lekérése és tárolása.

    VERSION=$(az aks get-versions \
        --location $REGION_NAME \
        --query 'orchestrators[?!isPreview] | [-1].orchestratorVersion' \
        --output tsv)
    
  2. Az AKS-fürt nevének egyedinek kell lennie. Futtassa ezt a parancsot egy egyedi nevet tartalmazó Bash-változó létrehozásához.

    AKS_CLUSTER_NAME=aksworkshop-$RANDOM
    
  3. Futtassa a következő parancsot az $AKS_CLUSTER_NAME területen tárolt érték megjelenítéséhez. Jegyezze fel későbbi felhasználásra. Ha szükségessé válna, a változó újrakonfigurálására használhatja a későbbiekben.

    echo $AKS_CLUSTER_NAME
    
  4. Az alábbi az aks create parancs futtatásával hozza létre az AKS-fürtöt a legújabb Kubernetes-verzió használatával. A parancs futtatása eltarthat néhány percig.

    az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_CLUSTER_NAME \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 2 \
    --load-balancer-sku standard \
    --location $REGION_NAME \
    --kubernetes-version $VERSION \
    --network-plugin azure \
    --vnet-subnet-id $SUBNET_ID \
    --service-cidr 10.2.0.0/24 \
    --dns-service-ip 10.2.0.10 \
    --docker-bridge-address 172.17.0.1/16 \
    --generate-ssh-keys
    

    Tekintsük át az előző parancs változóit:

    • $AKS_CLUSTER_NAME – megadja az AKS-fürt nevét.
    • $VERSION A a korábban lekért legújabb Kubernetes-verzió.
    • $SUBNET_ID – a virtuális hálózaton létrehozott alhálózat azonosítója, amelyet az AKS használatával kell konfigurálni.

    Figyelje meg a következő telepítési konfigurációt:

    • --vm-set-type: Megadja, hogy a fürt virtuálisgép-méretezési csoportokkal jöjjön létre. A virtuálisgép-méretezési csoportok lehetővé teszik, hogy szükség esetén bekapcsolja az automatikus fürtméretezőt.

    • --node-count: Itt adhatjuk meg, hogy két csomóponttal jöjjön létre a fürt. Az alapértelmezett csomópontok száma három. Ha azonban ingyenes próbafiókkal hajtja végre ezt a gyakorlatot, akkor az alapértelmezett beállítás mellett a fürt létrehozása a kvótahatár miatt meghiúsulhat.

    • --network-plugin: Megadja, hogy az AKS-fürt a CNI beépülő modullal jöjjön létre.

    • --service-cidr: Ez a címtartomány egy virtuális IP-címkészlet, amelyet a Kubernetes a fürt belső szolgáltatásaihoz rendel hozzá. A tartomány nem lehet a fürt virtuális hálózati IP-címének tartományán belül. Nem lehet azonos a podokhoz létrehozott alhálózattal.

    • --dns-service-ip: Az IP-cím a fürt DNS-szolgáltatásához használható. A címnek a Kubernetes szolgáltatási címtartományába kell tartoznia. Ne használja a tartományban szereplő első IP-címet, mint például a 0.1. Az alhálózati tartomány első címét a kubernetes.default.svc.cluster.local címhez használja a rendszer.

    • --docker-bridge-address: A Docker-híd hálózati címe az összes Docker-telepítésben található alapértelmezett docker0 híd hálózati címe. Az AKS-fürtök és a podok maguk nem használják a docker0 hidat. Ennek ellenére be kell állítania ezt a címet, hogy továbbra is támogatást kapjanak az AKS-fürtön belül az olyan forgatókönyvek, mint a docker-létrehozás. A Docker-híd hálózati címéhez osztály nélküli, tartományok közötti útválasztást (CIDR) kell választania. Ha nem CIDR-t állít be, a Docker automatikusan választ egy alhálózatot. Ez az alhálózat ütközhet más CIDR-ekkel. Válasszon olyan címtartományt, amely nem ütközik a hálózatokon lévő többi CIDR-rel, beleértve a fürt CIDR-jét és a podokhoz tartozó CIDR-t.

A fürt kapcsolatainak ellenőrzése a kubectl használatával

A kubectl a Kubernetes fő parancssori kliense, amely elérhető a Cloud Shellben, és amellyel használhatja a fürtöt. A kubectl fürthöz való kapcsolódásának engedélyezéséhez szükség van egy fürtkörnyezetre. A környezet tartalmazza a fürt címét, a felhasználót és a névteret. Futtassa az aks get-credentials a parancsot a kubectl-példány konfigurálhoz.

  1. A fürt hitelesítő adatainak lekéréséhez futtasa le a következő parancsot.

    az aks get-credentials \
        --resource-group $RESOURCE_GROUP \
        --name $AKS_CLUSTER_NAME
    
  2. A fürt összes csomópontjának listázásával nézzük meg, hogy mi lett üzembe helyezve. Az összes csomópont kubectl get nodes listához futtassa a következő parancsot.

    kubectl get nodes
    

    Megjelenik a fürt csomópontjainak listája. Íme egy példa.

    NAME                                STATUS   ROLES   AGE  VERSION
    aks-nodepool1-29333311-vmss000000   Ready    agent   2m36s   v1.17.9
    aks-nodepool1-29333311-vmss000001   Ready    agent   2m34s   v1.17.9
    

Kubernetes-névtér létrehozása az alkalmazáshoz

A Fruit Smoothies számos további, más csapatoktól származó alkalmazást szeretne üzembe helyezni az üzembe helyezett AKS-fürtön. Több fürt futtatása helyett a cég a Kubernetes funkcióival egyetlen fürtben szeretné logikailag elkülöníteni a csapatokat és a számítási feladatokat. A cél az, hogy az egyes munkacsoportok igényei alapján a lehető legkevesebb jogosultság legyen kiosztva.

Mi az a névtér?

A Kubernetes-beli névtér logikai elkülönítési határt hoz létre. Az erőforrásneveknek a névtéren belül egyedinek kell lenniük, de a névterek között nem. Ha a Kubernetes-erőforrásokkal való munka során nem adja meg a névteret, akkor a rendszer az alapértelmezett névteret használja.

Hozzunk létre egy névteret az értékelési alkalmazáshoz.

  1. Listázza a fürt jelenlegi névtereit.

    kubectl get namespace
    

    Ehhez a kimenethez hasonló névtérlistát kap.

    NAME              STATUS   AGE
    default           Active   1h
    kube-node-lease   Active   1h
    kube-public       Active   1h
    kube-system       Active   1h
    
  2. Az kubectl create namespace paranccsal hozzon létre egy névteret a ratingsapp nevű alkalmazáshoz.

    kubectl create namespace ratingsapp
    

    A rendszer megerősíti, hogy a névtér létrejött.

    namespace/ratingsapp created
    

Összefoglalás

Ebben a gyakorlatban létrehozott egy erőforráscsoportot az erőforrásokhoz. Létrehozott egy virtuális hálózatot a fürt számára. Ezután üzembe helyezte az AKS-fürtöt az Azure CNI hálózatkezelési móddal együtt. Ezután csatlakoztatta a fürtöt a kubectl segítségével, majd létrehozott egy névteret a Kubernetes-erőforrásoknak.

A következőkben létrehozza és konfigurálja az AKS-fürttel együtt használni kívánt, valamint a tárolóalapú értékelési alkalmazás tárolására szolgáló Azure Container Registry- (ACR-) példányt.