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:Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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:
- Létrehozott egy Kubernetes-fürtöt.
- Állítson be egy névteret.
- Hozzárendelt egy felhasználót a névtérhez.
- A felhasználó konfigurációját a következőre mentette
C:\Users\<username>\.kube
: . - 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 kubectl
megkezdé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
:
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.
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.
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:
Á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.
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.
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.
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 apply
elé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