Nasazení bezstavové aplikace Kubernetes přes kubectl na zařízení GPU Azure Stack Edge pro
platí pro:
Azure Stack Edge pro – GPU
Azure Stack Edge pro r
Azure Stack Edge Mini r
Tento článek popisuje, jak nasadit bezstavovou aplikaci pomocí příkazů kubectl v existujícím clusteru Kubernetes. Tento článek vás také provede procesem vytvoření a nastavení lusků v bezstavových aplikacích.
Požadavky
Než budete moct vytvořit cluster Kubernetes a použít kubectl Nástroj příkazového řádku, musíte zajistit, aby:
Máte přihlašovací údaje pro přihlášení k zařízení Azure Stack Edge pro s jedním uzlem.
Prostředí Windows PowerShell 5,0 nebo novější je nainstalováno v klientském systému Windows pro přístup k zařízení Azure Stack Edge pro. Můžete mít i jiné klienty s podporovaným operačním systémem. Tento článek popisuje postup při použití klienta systému Windows. Pokud si chcete stáhnout nejnovější verzi Windows PowerShellu, přečtěte si část instalace Windows PowerShellu.
Na zařízení Azure Stack Edge pro je povolené výpočetní prostředky. Pokud chcete povolit výpočetní prostředky, v místním uživatelském rozhraní zařízení se dostanete na stránku COMPUTE . Pak vyberte síťové rozhraní, které chcete povolit pro výpočetní prostředky. Vyberte Povolit. Povolení výpočetních výsledků při vytváření virtuálního přepínače na zařízení v tomto síťovém rozhraní. Další informace najdete v tématu Povolení služby COMPUTE Network na Azure Stack Edge pro.
Vaše zařízení Azure Stack Edge pro má spuštěný clusterový server s Kubernetes verze v 1.9 nebo novějším. Další informace najdete v tématu Vytvoření a Správa clusteru Kubernetes na zařízení Microsoft Azure Stack Edge pro.
Máte nainstalovanou
kubectl.
Nasazení bezstavové aplikace
Než začnete, měli byste mít:
- Vytvořili jste cluster Kubernetes.
- Nastavte obor názvů.
- Byl přidružen uživatel s oborem názvů.
- Do se uložila konfigurace uživatele
C:\Users\<username>\.kube. - Nainstalováno
kubectl.
Teď můžete začít spouštět a spravovat Bezstavová nasazení aplikací na zařízeních Azure Stack Edge pro. Než začnete používat kubectl , musíte ověřit, jestli máte správnou verzi kubectl .
Ověřte, že máte správnou verzi kubectl a nastavte konfiguraci.
Chcete-li zjistit verzi nástroje kubectl :
Ověřte, že verze
kubectlje větší nebo rovna 1,9:kubectl versionPříklad výstupu je uveden níže:
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"}V tomto případě je klientská verze kubectl v 1.15.2 a je kompatibilní, aby pokračovala.
Získejte seznam lusků spuštěných v clusteru Kubernetes. Pod je kontejner aplikace nebo proces spuštěný v clusteru Kubernetes.
kubectl get pods -n <namespace-string>Příklad použití příkazu je uveden níže:
PS C:\WINDOWS\system32> kubectl get pods -n "test1" No resources found. PS C:\WINDOWS\system32>Výstup by měl uvádět, že se nenašly žádné prostředky (lusky), protože v clusteru nejsou spuštěné žádné aplikace.
Příkaz naplní adresářovou strukturu "C:\Users \ < UserName > \ . Kube" " konfiguračními soubory. Nástroj příkazového řádku kubectl bude tyto soubory používat k vytváření a správě bezstavových aplikací v clusteru Kubernetes.
Ručně zkontrolujte adresářovou strukturu "C:\Users \ < UserName > \ . Kube " , abyste ověřili, že kubectl ji naplní následujícími podsložkami:
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
Poznámka
Chcete-li zobrazit seznam všech příkazů kubectl, zadejte kubectl --help .
Vytvoření bezstavové aplikace pomocí nasazení
Nyní, když jste ověřili, že je verze příkazového řádku kubectl správná a že máte požadované konfigurační soubory, můžete vytvořit bezstavové nasazení aplikace.
Pod je základní jednotkou spuštění aplikace Kubernetes, nejmenší a nejjednodušší jednotka v objektovém modelu Kubernetes, který vytvoříte nebo nasadíte. Objekt pod také zapouzdřuje prostředky úložiště, jedinečnou IP adresu sítě a možnosti, které určují, jak by měly být kontejnery spuštěny.
Typ bezstavové aplikace, kterou vytvoříte, je nasazení webového serveru Nginx.
Všechny příkazy kubectl, které slouží k vytváření a správě bezstavových nasazení aplikací, musí určovat obor názvů přidružený ke konfiguraci. Obor názvů jste vytvořili při připojení ke clusteru na zařízení Azure Stack Edge pro v kurzu Vytvoření a Správa clusteru Kubernetes v zařízení se službou Microsoft Azure Stack Edge pro New-HcsKubernetesNamespace .
Chcete-li zadat obor názvů v příkazu kubectl, použijte kubectl <command> -n <namespace-string> .
Pomocí těchto kroků vytvořte nasazení Nginx:
Použijte bezstavovou aplikaci vytvořením objektu nasazení Kubernetes:
kubectl apply -f <yaml-file> -n <namespace-string>V tomto příkladu je cesta k souboru YAML aplikace externím zdrojem.
Toto je ukázkové použití příkazu a jeho výstup:
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n "test1" deployment.apps/nginx-deployment createdAlternativně můžete uložit následující Markdownu do místního počítače a nahradit cestu a název souboru v parametru -f . Například "C:\Kubernetes\deployment.yaml". Konfigurace pro nasazení aplikace by byla:
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: 80Tento příkaz vytvoří výchozí Nginx – nasazení, které má dvě lusky ke spuštění vaší aplikace.
Získejte popis Kubernetes Nginx – nasazení, které jste vytvořili:
kubectl describe deployment nginx-deployment -n <namespace-string>Ukázkové použití příkazu s výstupem je uvedeno níže:
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 2V nastavení repliky se zobrazí:
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailableNastavení repliky určuje, že vaše specifikace nasazení vyžaduje dvě lusky a že byly vytvořeny a aktualizovány a jsou připravené k použití.
Poznámka
Sada replik nahrazuje lusky, které se z nějakého důvodu odstraňují nebo ukončí, například v případě selhání uzlu zařízení nebo při upgradu na rušivý stav zařízení. Z tohoto důvodu doporučujeme použít sadu replik i v případě, že vaše aplikace vyžaduje jenom jedno pod.
Chcete-li zobrazit seznam lusků v nasazení:
kubectl get pods -l app=nginx -n <namespace-string>Ukázkové použití příkazu s výstupem je uvedeno níže:
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 3m13sVýstup ověří, že máme dvě lusky s jedinečnými názvy, na které můžeme odkazovat pomocí kubectl.
Zobrazení informací o jednotlivých objektech pod vaším nasazením:
kubectl describe pod <podname-string> -n <namespace-string>
Ukázkové použití příkazu s výstupem je uvedeno níže:
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
Škálovat nasazení aplikace zvýšením počtu replik
Každé z nich je určeno ke spuštění jedné instance dané aplikace. Pokud chcete aplikaci škálovat vodorovně a spustit více instancí, můžete pro každou instanci zvýšit počet lusků na jednu. V Kubernetes se tento postup označuje jako replikace. Počet lusků v nasazení aplikace můžete zvýšit použitím nového souboru YAML. Soubor YAML změní nastavení replik na 4, což zvyšuje počet lusků v nasazení na čtyři lusky. Pokud chcete zvýšit počet lusků od 2 do 4:
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment-scale.yaml -n "test1"
Alternativně můžete uložit následující Markdownu na místním počítači a nahradit cestu a název souboru pro parametr -f pro kubectl apply . Například "C:\Kubernetes\deployment-scale.yaml". Konfigurace pro škálování nasazení aplikace by byla:
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
Chcete-li ověřit, zda má nasazení čtyři lusky:
kubectl get pods -l app=nginx
Příklad výstupu pro nasazení změny měřítka ze dvou na čtyři lusky je uveden níže:
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
Jak vidíte z výstupu, teď máte ve svém nasazení čtyři lusky, které můžou aplikaci spouštět.
Odstranění nasazení
Chcete-li odstranit nasazení, včetně všech lusků, je třeba spustit kubectl delete deployment zadání názvu nasazení Nginx-Deployment a názvu oboru názvů. Postup odstranění nasazení:
kubectl delete deployment nginx-deployment -n <namespace-string>
Příklad použití příkazu s výstupem je uveden níže:
PS C:\Users\user> kubectl delete deployment nginx-deployment -n "test1"
deployment.extensions "nginx-deployment" deleted