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:Pro GPU SKU için Evet Azure Stack Edge Pro - GPUPro 2 SKU için EvetAzure Stack Edge Pro 2Pro R SKU için EvetAzure Stack Edge Pro RMini R SKU için EvetAzure 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:

  1. Kubernetes kümesi oluşturuldu.
  2. Bir ad alanı ayarlayın.
  3. Bir kullanıcıyı ad alanıyla ilişkilendirdi.
  4. Kullanıcı yapılandırmasını öğesine C:\Users\<username>\.kubekaydetti.
  5. 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 kubectlbaşlamadan önce doğru sürümüne kubectlsahip 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ü kubectldenetlemek için:

  1. 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.

  2. 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.

  3. "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-HcsKubernetesNamespaceAzure 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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 applyyolunu 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

Sonraki adımlar

Kubernetes'e Genel Bakış