Azure Stack Edge Pro GPU cihazınızda kubectl aracılığıyla durum bilgisi olmayan bir Kubernetes uygulaması dağıtma
ŞUNLAR IÇIN GEÇERLIDIR: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Bu makalede, mevcut bir Kubernetes kümesinde kubectl komutlarını kullanarak durum bilgisi olmayan bir uygulamanın nasıl dağıtılacağı açıklanır. Bu makale ayrıca durum bilgisi olmayan uygulamanızda pod oluşturma ve ayarlama işleminde size yol gösterir.
Önkoşullar
Kubernetes kümesi oluşturup komut satırı aracını kullanabilmeniz kubectl
için önce şunları yapmanız gerekir:
1 düğümlü bir Azure Stack Edge Pro cihazında oturum açma kimlik bilgileriniz var.
Windows PowerShell 5.0 veya üzeri, Azure Stack Edge Pro cihazına erişmek için bir Windows istemci sistemine yüklenir. Desteklenen işletim sistemine sahip başka bir istemciniz de olabilir. Bu makalede, Bir Windows istemcisi kullanılırken yordam açıklanmaktadır. Windows PowerShell'in en son sürümünü indirmek için Windows PowerShell'i Yükleme bölümüne gidin.
İşlem, Azure Stack Edge Pro cihazında etkinleştirilir. İşlemi etkinleştirmek için cihazın yerel kullanıcı arabirimindeki İşlem sayfasına gidin. Ardından işlem için etkinleştirmek istediğiniz ağ arabirimini seçin. Etkinleştir'i seçin. İşlem etkinleştirildiğinde bu ağ arabiriminde cihazınızda bir sanal anahtar oluşturulur. Daha fazla bilgi için bkz . Azure Stack Edge Pro'nuzda işlem ağını etkinleştirme.
Azure Stack Edge Pro cihazınızda v1.9 veya sonraki bir sürümü çalıştıran bir Kubernetes küme sunucusu var. Daha fazla bilgi için bkz . Microsoft Azure Stack Edge Pro cihazında Kubernetes kümesi oluşturma ve yönetme.
uygulamasını yüklediniz
kubectl
.
Durum bilgisi olmayan bir uygulama dağıtma
Başlamadan önce şunları yapmanız gerekir:
- Kubernetes kümesi oluşturuldu.
- Bir ad alanı ayarlayın.
- Bir kullanıcıyı ad alanıyla ilişkilendirdi.
- Kullanıcı yapılandırmasını öğesine
C:\Users\<username>\.kube
kaydetti. - yüklendi
kubectl
.
Artık Azure Stack Edge Pro cihazında durum bilgisi olmayan uygulama dağıtımlarını çalıştırmaya ve yönetmeye başlayabilirsiniz. kullanmaya kubectl
başlamadan önce doğru sürümüne kubectl
sahip olduğunuzu doğrulamanız gerekir.
Doğru kubectl sürümüne sahip olduğunuzu doğrulayın ve yapılandırmayı ayarlayın
sürümünü kubectl
denetlemek için:
sürümünün
kubectl
1,9'a eşit veya daha büyük olduğunu doğrulayın:kubectl version
Çıktının bir örneği aşağıda gösterilmiştir:
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"}
Bu durumda kubectl istemci sürümü v1.15.2'dir ve devam etmek için uyumludur.
Kubernetes kümenizde çalışan podların listesini alın. Pod, Kubernetes kümenizde çalışan bir uygulama kapsayıcısı veya işlemdir.
kubectl get pods -n <namespace-string>
Aşağıda bir komut kullanımı örneği gösterilmiştir:
PS C:\WINDOWS\system32> kubectl get pods -n "test1" No resources found. PS C:\WINDOWS\system32>
Çıktı, kümenizde çalışan hiçbir uygulama olmadığından kaynak (pod) bulunamadığını belirtmelidir.
Komut, "C:\Users\username>\<.kube" dizini yapısını yapılandırma dosyalarıyla doldurur. kubectl komut satırı aracı, Kubernetes kümenizde durum bilgisi olmayan uygulamalar oluşturmak ve yönetmek için bu dosyaları kullanır.
"C:\Users\<username>\.kube" dizininin yapısını el ile denetleerek kubectl'nin bunu aşağıdaki alt klasörlerle doldurdığını doğrulayın:
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
Not
Tüm kubectl komutlarının listesini görüntülemek için yazın kubectl --help
.
Dağıtım kullanarak durum bilgisi olmayan uygulama oluşturma
Kubectl komut satırı sürümünün doğru olduğunu ve gerekli yapılandırma dosyalarına sahip olduğunuzu doğruladığınıza göre, durum bilgisi olmayan bir uygulama dağıtımı oluşturabilirsiniz.
Pod, oluşturduğunuz veya dağıttığınız Kubernetes nesne modelindeki en küçük ve en basit birim olan Kubernetes uygulamasının temel yürütme birimidir. Pod ayrıca depolama kaynaklarını, benzersiz bir ağ IP'sini ve kapsayıcıların çalışma şeklini yöneten seçenekleri kapsüller.
Oluşturduğunuz durum bilgisi olmayan uygulama türü bir nginx web sunucusu dağıtımıdır.
Durum bilgisi olmayan uygulama dağıtımlarını oluşturmak ve yönetmek için kullandığınız tüm kubectl komutlarının yapılandırmayla ilişkili ad alanını belirtmesi gerekir. ile Microsoft Azure Stack Edge Pro cihazında Kubernetes kümesi oluşturma ve yönetme öğreticisindeki New-HcsKubernetesNamespace
Azure Stack Edge Pro cihazında kümeye bağlıyken ad alanını oluşturdunuz.
Bir kubectl komutunda ad alanını belirtmek için kullanın kubectl <command> -n <namespace-string>
.
Nginx dağıtımı oluşturmak için şu adımları izleyin:
Kubernetes dağıtım nesnesi oluşturarak durum bilgisi olmayan bir uygulama uygulayın:
kubectl apply -f <yaml-file> -n <namespace-string>
Bu örnekte, uygulama YAML dosyasının yolu bir dış kaynaktır.
Komutun ve çıkışının örnek kullanımı aşağıda verilmiştir:
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment.yaml -n "test1" deployment.apps/nginx-deployment created
Alternatif olarak, aşağıdaki markdown'ı yerel makinenize kaydedebilir ve -f parametresindeki yolu ve dosya adını değiştirebilirsiniz. Örneğin, "C:\Kubernetes\deployment.yaml". Uygulama dağıtımının yapılandırması şöyle olacaktır:
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
Bu komut, uygulamanızı çalıştırmak için iki pod içeren varsayılan bir nginx-deployment oluşturur.
Oluşturduğunuz Kubernetes nginx-deployment açıklamasını alın:
kubectl describe deployment nginx-deployment -n <namespace-string>
Komutun çıktıyla birlikte örnek kullanımı aşağıda gösterilmiştir:
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
Çoğaltmalar ayarı için şunları görürsünüz:
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
Çoğaltmalar ayarı, dağıtım belirtiminizin iki pod gerektirdiğini ve bu podların oluşturulduğunu ve güncelleştirildiğini ve kullanıma hazır olduğunu gösterir.
Not
Çoğaltma kümesi, cihaz düğümü hatası veya kesintiye neden olan bir cihaz yükseltmesi gibi herhangi bir nedenle silinen veya sonlandırılan podların yerini alır. Bu nedenle, uygulamanız yalnızca tek bir pod gerektirse bile bir çoğaltma kümesi kullanmanızı öneririz.
Dağıtımınızdaki podları listelemek için:
kubectl get pods -l app=nginx -n <namespace-string>
Komutun çıktıyla birlikte örnek kullanımı aşağıda gösterilmiştir:
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
Çıkış, kubectl kullanarak başvurabileceğiniz benzersiz adlara sahip iki pod olduğunu doğrular.
Dağıtımınızdaki tek bir podla ilgili bilgileri görüntülemek için:
kubectl describe pod <podname-string> -n <namespace-string>
Komutun çıktıyla birlikte örnek kullanımı aşağıda gösterilmiştir:
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
Çoğaltma sayısını artırarak uygulama dağıtımını yeniden ölçeklendirme
Her pod, belirli bir uygulamanın tek bir örneğini çalıştırmaya yöneliktir. Uygulamanızı birden çok örneği çalıştıracak şekilde yatay olarak ölçeklendirmek istiyorsanız, her örnek için pod sayısını bire artırabilirsiniz. Kubernetes'te bu, çoğaltma olarak adlandırılır. Yeni bir YAML dosyası uygulayarak uygulama dağıtımınızdaki pod sayısını artırabilirsiniz. YAML dosyası, çoğaltmalar ayarını 4 olarak değiştirir ve bu da dağıtımınızdaki pod sayısını dört pod olarak artırır. Pod sayısını 2'den 4'e artırmak için:
PS C:\WINDOWS\system32> kubectl apply -f https://k8s.io/examples/application/deployment-scale.yaml -n "test1"
Alternatif olarak, yerel makinenize aşağıdaki markdown'ı kaydedebilir ve için -f parametresinin kubectl apply
yolunu ve dosya adını değiştirebilirsiniz. Örneğin, "C:\Kubernetes\deployment-scale.yaml". Uygulama dağıtım ölçeğinin yapılandırması şöyle olacaktır:
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
Dağıtımın dört pod içerdiğini doğrulamak için:
kubectl get pods -l app=nginx
İki ile dört pod arası yeniden ölçeklendirme dağıtımı için örnek çıkış aşağıda gösterilmiştir:
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
Çıkıştan görebileceğiniz gibi, artık dağıtımınızda uygulamanızı çalıştırabilen dört podunuz var.
Dağıtımı Silme
Tüm podlar da dahil olmak üzere dağıtımı silmek için nginx-deployment dağıtımının adını ve ad alanı adını belirterek komutunu çalıştırmanız kubectl delete deployment
gerekir. Dağıtımı silmek için:
kubectl delete deployment nginx-deployment -n <namespace-string>
Çıktı içeren bir komut kullanımı örneği aşağıda gösterilmiştir:
PS C:\Users\user> kubectl delete deployment nginx-deployment -n "test1"
deployment.extensions "nginx-deployment" deleted