Kubernetes állapot nélküli alkalmazás üzembe helyezése kubectl használatával az Azure Stack Edge Pro GPU-eszközön

ÉRVÉNYES:Yes for Pro GPU SKUAzure Stack Edge Pro – GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

Ez a cikk azt ismerteti, hogyan helyezhet üzembe állapot nélküli alkalmazásokat kubectl-parancsokkal egy meglévő Kubernetes-fürtön. Ez a cikk végigvezeti a podok állapot nélküli alkalmazásban való létrehozásának és beállításának folyamatán is.

Előfeltételek

A Kubernetes-fürt létrehozása és a parancssori kubectl eszköz használata előtt győződjön meg arról, hogy:

  • Bejelentkezési hitelesítő adatai vannak egy 1 csomópontos Azure Stack Edge Pro-eszközre.

  • A Windows PowerShell 5.0 vagy újabb verziója windowsos ügyfélrendszerre van telepítve az Azure Stack Edge Pro-eszköz eléréséhez. Bármely más ügyfél is rendelkezhet támogatott operációs rendszerrel. Ez a cikk a Windows-ügyfél használatakor használt eljárást ismerteti. A Windows PowerShell legújabb verziójának letöltéséhez nyissa meg a Windows PowerShell telepítését.

  • A számítás engedélyezve van az Azure Stack Edge Pro-eszközön. A számítás engedélyezéséhez lépjen az eszköz helyi felhasználói felületén található Számítási lapra. Ezután válasszon ki egy hálózati adaptert, amelyet engedélyezni szeretne a számításhoz. Select Enable. A számítás engedélyezése virtuális kapcsoló létrehozását eredményezi az eszközön az adott hálózati adapteren. További információ: Számítási hálózat engedélyezése az Azure Stack Edge Pro-ban.

  • Az Azure Stack Edge Pro-eszköz egy 1.9-es vagy újabb verziójú Kubernetes-fürtkiszolgálóval rendelkezik. További információ: Kubernetes-fürt létrehozása és kezelése Microsoft Azure Stack Edge Pro-eszközön.

  • Telepítette kubectl.

Állapot nélküli alkalmazás üzembe helyezése

Mielőtt hozzákezdünk, a következőt kell elvégeznie:

  1. Létrehozott egy Kubernetes-fürtöt.
  2. Állítson be egy névteret.
  3. Hozzárendelt egy felhasználót a névtérhez.
  4. A felhasználó konfigurációját a következőre mentette C:\Users\<username>\.kube: .
  5. Telepítve kubectl.

Most megkezdheti az állapot nélküli alkalmazástelepítések futtatását és kezelését egy Azure Stack Edge Pro-eszközön. A használat kubectlmegkezdése előtt ellenőriznie kell, hogy a megfelelő verzióval rendelkezik-e kubectl.

Ellenőrizze, hogy a kubectl megfelelő verziójával rendelkezik-e, és beállította-e a konfigurációt

A következő verzió ellenőrzéséhez kubectl:

  1. Ellenőrizze, hogy a verzió értéke nagyobb vagy egyenlő-e az 1.9-es verzióval kubectl :

    kubectl version
    

    A kimenetre alább látható egy példa:

    PS C:\WINDOWS\system32> C:\windows\system32\kubectl.exe version
    Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:23:26Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"}
    Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
    

    Ebben az esetben a kubectl ügyfélverziója 1.15.2-es verzió, és kompatibilis a folytatáshoz.

  2. Kérje le a Kubernetes-fürtön futó podok listáját. A pod egy alkalmazástároló vagy folyamat, amely a Kubernetes-fürtön fut.

    kubectl get pods -n <namespace-string>
    

    A parancshasználatra az alábbi példa látható:

    PS C:\WINDOWS\system32> kubectl get pods -n "test1"
    No resources found.
    PS C:\WINDOWS\system32>
    

    A kimenetnek azt kell tartalmaznia, hogy nem találhatók erőforrások (podok), mert nincsenek alkalmazások a fürtön.

    A parancs konfigurációs fájlokkal tölti fel a "C:\Users\<username>\.kube" könyvtárstruktúráját. A kubectl parancssori eszköz ezeket a fájlokat használja állapot nélküli alkalmazások létrehozásához és kezeléséhez a Kubernetes-fürtön.

  3. Ellenőrizze manuálisan a "C:\Users\<username>\.kube" könyvtárszerkezetét, hogy ellenőrizze , hogy a kubectl feltöltötte-e a következő almappákkal:

    PS C:\Users\username> ls .kube
    
    
       Directory: C:\Users\user\.kube
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----         2/18/2020 11:05 AM                cache
    d-----         2/18/2020 11:04 AM                http-cache
    -a----         2/18/2020 10:41 AM           5377 config
    

Megjegyzés:

Az összes kubectl-parancs listájának megtekintéséhez írja be a következőt kubectl --help:

Állapot nélküli alkalmazás létrehozása üzembe helyezéssel

Most, hogy ellenőrizte, hogy a kubectl parancssori verziója helyes-e, és rendelkezik a szükséges konfigurációs fájlokkal, létrehozhat állapot nélküli alkalmazástelepítést.

A pod egy Kubernetes-alkalmazás alapszintű végrehajtási egysége, amely a kubernetes-objektummodell legkisebb és legegyszerűbb egysége, amelyet ön hoz létre vagy helyez üzembe. A pod magában foglalja a tárolási erőforrásokat, az egyedi hálózati IP-címet és a tároló(k) futtatásának módját szabályozó beállításokat is.

A létrehozott állapot nélküli alkalmazás típusa egy nginx webkiszolgáló üzembe helyezése.

Az állapot nélküli alkalmazástelepítések létrehozásához és kezeléséhez használt kubectl-parancsoknak meg kell adniuk a konfigurációhoz társított névteret. A névteret az Azure Stack Edge Pro eszköz fürthöz való csatlakoztatása közben hozta létre a Microsoft Azure Stack Edge Pro eszköz oktatóanyagában található Kubernetes-fürt létrehozása és kezelése című témakörben New-HcsKubernetesNamespace.

A névtér kubectl-parancsban való megadásához használja kubectl <command> -n <namespace-string>a következőt: .

Nginx-telepítés létrehozásához kövesse az alábbi lépéseket:

  1. Állapot nélküli alkalmazás alkalmazása Kubernetes-üzembehelyezési objektum létrehozásával:

    kubectl apply -f <yaml-file> -n <namespace-string>
    

    Ebben a példában az alkalmazás YAML-fájljának elérési útja egy külső forrás.

    Íme egy példa a parancs és kimenetének használatára:

    PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n "test1"
    
    deployment.apps/nginx-deployment created
    

    Másik lehetőségként mentheti a következő markdownt a helyi gépre, és helyettesítheti az elérési utat és a fájlnevet a -f paraméterben. Például: "C:\Kubernetes\deployment.yaml". Az alkalmazás központi telepítésének konfigurációja a következő:

    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2 # tells deployment to run 2 pods matching the template
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

    Ez a parancs létrehoz egy alapértelmezett nginx-üzembe helyezést, amely két podot tartalmaz az alkalmazás futtatásához.

  2. Szerezze be a létrehozott Kubernetes nginx-deployment leírását:

    kubectl describe deployment nginx-deployment -n <namespace-string>
    

    A parancs kimenettel történő mintahasználata az alábbiakban látható:

    PS C:\Users\user> kubectl describe deployment nginx-deployment -n "test1"
    
    Name:                   nginx-deployment
    Namespace:              test1
    CreationTimestamp:      Tue, 18 Feb 2020 13:35:29 -0800
    Labels:                 <none>
    Annotations:            deployment.kubernetes.io/revision: 1
                            kubectl.kubernetes.io/last-applied-configuration:
                              {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"test1"},"spec":{"repl...
    Selector:               app=nginx
    Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
    StrategyType:           RollingUpdate
    MinReadySeconds:        0
    RollingUpdateStrategy:  25% max unavailable, 25% max surge
    Pod Template:
       Labels:  app=nginx
       Containers:
        nginx:
         Image:        nginx:1.7.9
         Port:         80/TCP
         Host Port:    0/TCP
         Environment:  <none>
         Mounts:       <none>
       Volumes:        <none>
    Conditions:
       Type           Status  Reason
       ----           ------  ------
       Available      True    MinimumReplicasAvailable
       Progressing    True    NewReplicaSetAvailable
    OldReplicaSets:  <none>
    NewReplicaSet:   nginx-deployment-5754944d6c (2/2 replicas created)
    Events:
      Type    Reason             Age    From                   Message
      ----    ------             ----   ----                   -------
      Normal  ScalingReplicaSet  2m22s  deployment-controller  Scaled up replica set nginx-deployment-5754944d6c to 2
    

    A replikák beállításához a következőt fogja látni:

    Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
    

    A replikák beállítása azt jelzi, hogy az üzembehelyezési specifikációhoz két pod szükséges, és hogy ezek a podok létrehozva és frissítve lettek, és készen állnak a használatra.

    Megjegyzés:

    A replikakészletek lecserélik a törölt vagy leállított podokat, például eszközcsomópontok meghibásodása vagy zavaró eszközfrissítés esetén. Ezért azt javasoljuk, hogy akkor is használjon replikakészletet, ha az alkalmazás csak egyetlen podot igényel.

  3. A podok listázása az üzemelő példányban:

    kubectl get pods -l app=nginx -n <namespace-string>
    

    A parancs kimenettel történő mintahasználata az alábbiakban látható:

    PS C:\Users\user> kubectl get pods -l app=nginx -n "test1"
    
    NAME                                READY   STATUS    RESTARTS   AGE
    nginx-deployment-5754944d6c-7wqjd   1/1     Running   0          3m13s
    nginx-deployment-5754944d6c-nfj2h   1/1     Running   0          3m13s
    

    A kimenet ellenőrzi, hogy van-e két egyedi névvel rendelkező podunk, amelyekre a kubectl használatával hivatkozhatunk.

  4. Az üzembe helyezésben lévő egyes podok adatainak megtekintése:

    kubectl describe pod <podname-string> -n <namespace-string>
    

A parancs kimenettel történő mintahasználata az alábbiakban látható:

PS C:\Users\user> kubectl describe pod "nginx-deployment-5754944d6c-7wqjd" -n "test1"

Name:           nginx-deployment-5754944d6c-7wqjd
Namespace:      test1
Priority:       0
Node:           k8s-1d9qhq2cl-n1/10.128.46.184
Start Time:     Tue, 18 Feb 2020 13:35:29 -0800
Labels:         app=nginx
                pod-template-hash=5754944d6c
Annotations:    <none>
Status:         Running
IP:             172.17.246.200
Controlled By:  ReplicaSet/nginx-deployment-5754944d6c
 Containers:
   nginx:
     Container ID:   docker://280b0f76bfdc14cde481dc4f2b8180cf5fbfc90a084042f679d499f863c66979
     Image:          nginx:1.7.9
     Image ID:       docker-pullable://nginx@sha256:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451
     Port:           80/TCP
     Host Port:      0/TCP
     State:          Running
       Started:      Tue, 18 Feb 2020 13:35:35 -0800
     Ready:          True
     Restart Count:  0
     Environment:    <none>
     Mounts:
       /var/run/secrets/kubernetes.io/serviceaccount from default-token-8gksw (ro)
 Conditions:
   Type              Status
   Initialized       True
   Ready             True
   ContainersReady   True
   PodScheduled      True
 Volumes:
   default-token-8gksw:
     Type:        Secret (a volume populated by a Secret)
     SecretName:  default-token-8gksw
     Optional:    false
 QoS Class:       BestEffort
 Node-Selectors:  <none>
 Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                  node.kubernetes.io/unreachable:NoExecute for 300s
 Events:
   Type    Reason     Age    From                       Message
   ----    ------     ----   ----                       -------
   Normal  Scheduled  4m58s  default-scheduler          Successfully assigned test1/nginx-deployment-5754944d6c-7wqjd to k8s-1d9qhq2cl-n1
   Normal  Pulling    4m57s  kubelet, k8s-1d9qhq2cl-n1  Pulling image "nginx:1.7.9"
   Normal  Pulled     4m52s  kubelet, k8s-1d9qhq2cl-n1  Successfully pulled image "nginx:1.7.9"
   Normal  Created    4m52s  kubelet, k8s-1d9qhq2cl-n1  Created container nginx
   Normal  Started    4m52s  kubelet, k8s-1d9qhq2cl-n1  Started container nginx

Az alkalmazás központi telepítésének újraskálázása a replikák számának növelésével

Mindegyik pod egy adott alkalmazás egyetlen példányának futtatására szolgál. Ha vízszintesen szeretné skálázni az alkalmazást több példány futtatására, akkor a podok számát minden példányhoz egy-egyre növelheti. A Kubernetesben ezt replikációnak nevezzük. Egy új YAML-fájl alkalmazásával növelheti a podok számát az alkalmazás központi telepítésében. A YAML-fájl 4-esre módosítja a replikák beállítását, ami négy podra növeli az üzembe helyezésben lévő podok számát. A podok számának növelése 2-ről 4-re:

PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment-scale.yaml -n "test1"

Másik lehetőségként mentheti a következő markdownt a helyi gépen, és helyettesítheti a -f paraméter kubectl applyelérési útját és fájlnevét. Például: "C:\Kubernetes\deployment-scale.yaml". Az alkalmazás üzembe helyezési skálájának konfigurációja a következő:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 4 # Update the replicas from 2 to 4
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.8
        ports:
        - containerPort: 80

Annak ellenőrzéséhez, hogy az üzembe helyezés négy podból áll-e:

kubectl get pods -l app=nginx

Az üzembe helyezés 2-ről négy podra történő újraskálázásának kimenete az alábbiakban látható:

PS C:\WINDOWS\system32> kubectl get pods -l app=nginx

NAME                               READY     STATUS    RESTARTS   AGE
nginx-deployment-148880595-4zdqq   1/1       Running   0          25s
nginx-deployment-148880595-6zgi1   1/1       Running   0          25s
nginx-deployment-148880595-fxcez   1/1       Running   0          2m
nginx-deployment-148880595-rwovn   1/1       Running   0          2m

Ahogy a kimenetből látható, most már négy pod található az üzembe helyezésben, amelyek futtathatják az alkalmazást.

Üzembe helyezés törlése

Az üzembe helyezés törléséhez , beleértve az összes podot is, futtatnia kubectl delete deployment kell az üzembe helyezés nginx-deployment nevének és a névtér nevének megadásával. Az üzembe helyezés törlése:

kubectl delete deployment nginx-deployment -n <namespace-string>

A parancshasználatra az alábbiakban látható példa a kimenettel:

PS C:\Users\user> kubectl delete deployment nginx-deployment -n "test1"
deployment.extensions "nginx-deployment" deleted

Következő lépések

A Kubernetes áttekintése