Kubernetes durum bilgisi olan bir uygulamayı Azure Stack Edge Pro GPU cihazınızda StorageClass ile çalıştırmak için kubectl kullanma
ŞUNLAR IÇIN GEÇERLIDIR: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Bu makalede depolamayı ve dağıtımı dinamik olarak sağlamak için StorageClass kullanarak Kubernetes'te durum bilgisi olan tek örnekli bir uygulamanın nasıl dağıtılacağı gösterilmektedir. Dağıtım, mevcut bir Kubernetes kümesindeki komutları kullanır kubectl
ve MySQL uygulamasını dağıtır.
Bu yordam, Azure Stack Edge Pro cihazında Kubernetes depolama alanını gözden geçiren ve Kubernetes depolama kavramları hakkında bilgi sahibi olan kişilere yöneliktir.
Önkoşullar
Durum bilgisi olan uygulamayı dağıtabilmeniz için önce cihazınızda ve cihaza erişmek için kullanacağınız istemcide aşağıdaki önkoşulları tamamlayın:
Cihaz için
- 1 düğümlü bir Azure Stack Edge Pro cihazında oturum açma kimlik bilgileriniz var.
Cihaza erişen istemci için
- Azure Stack Edge Pro cihazına erişmek için kullanılacak bir Windows istemci sisteminiz var.
İstemci Windows PowerShell 5.0 veya üzerini çalıştırıyor. Windows PowerShell'in en son sürümünü indirmek için Windows PowerShell'i Yükleme'ye gidin.
Desteklenen işletim sistemine sahip başka bir istemciniz de olabilir. Bu makalede, Bir Windows istemcisi kullanılırken yordam açıklanmaktadır.
Azure Stack Edge Pro cihazında Kubernetes kümesine erişme bölümünde açıklanan yordamı tamamladınız. Sahip olduğunuz:
- komutuyla
New-HcsKubernetesNamespace
biruserns1
ad alanı oluşturuldu. - komutuyla bir kullanıcı
user1
oluşturdunuzNew-HcsKubernetesUser
. user1
komutu aracılığıyla erişimuserns1
izniGrant-HcsKubernetesNamespaceAccess
verildi.- İstemciye yüklendi
kubectl
ve kullanıcı yapılandırmasıyla dosyayı C:\Users\<username>\.kube dosyasına kaydettikubeconfig
.
- komutuyla
İstemci sürümünün
kubectl
Azure Stack Edge Pro cihazınızda çalışan Kubernetes ana sürümünden en fazla bir sürümün çarpıtıldığından emin olun.- İstemcide çalışan kubectl sürümünü denetlemek için kullanın
kubectl version
. Tam sürümü not edin. - Azure Stack Edge Pro cihazınızın yerel kullanıcı arabiriminde Genel Bakış'a gidin ve Kubernetes yazılım numarasını not edin.
- Desteklenen Kubernetes sürümünde sağlanan eşlemeden uyumluluk için bu iki sürümü doğrulayın.
- İstemcide çalışan kubectl sürümünü denetlemek için kullanın
Azure Stack Edge Pro cihazınızda durum bilgisi olan bir uygulama dağıtmaya hazırsınız.
MySQL'i dağıtma
Şimdi bir Kubernetes Dağıtımı oluşturup PersistentVolumeClaim (PVC) kullanarak bunu yerleşik StorageClass'a bağlayarak durum bilgisi olan bir uygulama çalıştıracaksınız.
Durum bilgisi olan uygulama dağıtımlarını oluşturmak ve yönetmek için kullandığınız tüm kubectl
komutların yapılandırmayla ilişkili ad alanını belirtmesi gerekir. Bir kubectl komutunda ad alanını belirtmek için kullanın kubectl <command> -n <your-namespace>
.
Ad alanınızdaki 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 <your-namespace>
Aşağıda bir komut kullanımı örneği verilmiştir:
C:\Users\user>kubectl get pods -n "userns1" No resources found in userns1 namespace. C:\Users\user>
Çıktı, kümenizde çalışan hiçbir uygulama olmadığından kaynak (pod) bulunamadığını belirtmelidir.
Aşağıdaki YAML dosyalarını kullanacaksınız. Dosya,
mysql-deployment.yml
MySQL çalıştıran ve PVC'ye başvuran bir dağıtımı açıklar. Dosya, için/var/lib/mysql
bir birim bağlaması tanımlar ve ardından 20 GB'lık birimin arandığı bir PVC oluşturur. Dinamik bir BD sağlanır ve PVC bu BD'ye bağlıdır.Aşağıdaki
mysql-deployment.yml
dosyayı kopyalayın ve Azure Stack Edge Pro cihazına erişmek için kullandığınız Windows istemcisinde bir klasöre kaydedin.apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None --- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env: # Use secret in real usage - name: MYSQL_ROOT_PASSWORD value: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim-sc
dosyasını kopyalayıp kaydettiğiniz
mysql-pvc.yml
klasöremysql-deployment.yml
kaydedin. Ekli bir veri diskinde Azure Stack Edge Pro cihazının yerleşik StorageClass'ını kullanmak için, PVC nesnesindeki alanı olarakase-node-local
ayarlayınstorageClassName
ve accessModes olmalıdırReadWriteOnce
.Not
YAML dosyalarının doğru girintiye sahip olduğundan emin olun. Doğrulamak ve sonra kaydetmek için YAML lint ile kontrol edebilirsiniz.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim-sc spec: storageClassName: ase-node-local accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
Dosyayı dağıtın
mysql-pvc.yaml
.kubectl apply -f <URI path to the mysql-pv.yml file> -n <your-user-namespace>
Dağıtımın örnek çıktısı aşağıda verilmişti.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-pvc.yml" -n userns1 persistentvolumeclaim/mysql-pv-claim-sc created C:\Users\user>
Bu örnekte
mysql-pv-claim-sc
, oluşturulan PVC'nin adını not edin. Bunu sonraki bir adımda kullanacaksınız.Dosyanın içeriğini dağıtın
mysql-deployment.yml
.kubectl apply -f <URI path to mysql-deployment.yml file> -n <your-user-namespace>
Dağıtımın örnek çıktısı aşağıda verilmişti.
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-deployment.yml" -n userns1 service/mysql created deployment.apps/mysql created C:\Users\user>
Dağıtım hakkındaki bilgileri görüntüleyin.
kubectl describe deployment <app-label> -n <your-user-namespace>
C:\Users\user>kubectl describe deployment mysql -n userns1 Name: mysql Namespace: userns1 CreationTimestamp: Thu, 20 Aug 2020 11:14:25 -0700 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"mysql","namespace":"userns1"},"spec":{"selector":{"matchL... Selector: app=mysql Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable StrategyType: Recreate MinReadySeconds: 0 Pod Template: Labels: app=mysql Containers: mysql: Image: mysql:5.6 Port: 3306/TCP Host Port: 0/TCP Environment: MYSQL_ROOT_PASSWORD: password Mounts: /var/lib/mysql from mysql-persistent-storage (rw) Volumes: mysql-persistent-storage: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: mysql-pv-claim-sc ReadOnly: false Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: mysql-695c4d9dcd (1/1 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 24s deployment-controller Scaled up replica set mysql-695c4d9dcd to 1 C:\Users\user>
Dağıtım tarafından oluşturulan podları listeleyin.
kubectl get pods -l <app=label> -n <your-user-namespace>
Aşağıda örnek bir çıkış verilmişti.
C:\Users\user>kubectl get pods -l app=mysql -n userns1 NAME READY STATUS RESTARTS AGE mysql-695c4d9dcd-rvzff 1/1 Running 0 40s C:\Users\user>
PersistentVolumeClaim öğesini inceleyin.
kubectl describe pvc <your-pvc-name>
Aşağıda örnek bir çıkış verilmişti.
C:\Users\user>kubectl describe pvc mysql-pv-claim-sc -n userns1 Name: mysql-pv-claim-sc Namespace: userns1 StorageClass: ase-node-local Status: Bound Volume: pvc-dc48253c-82dc-42a4-a7c6-aaddc97c9b8a Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"mysql-pv-claim-sc","namespace":"userns1"},"spec":{"... pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path volume.kubernetes.io/selected-node: k8s-3q7lhq2cl-3q7lhq2 Finalizers: [kubernetes.io/pvc-protection] Capacity: 20Gi Access Modes: RWO VolumeMode: Filesystem Mounted By: mysql-695c4d9dcd-rvzff Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal WaitForFirstConsumer 71s (x2 over 77s) persistentvolume-controller waiting for first consumer to be created before binding Normal ExternalProvisioning 62s persistentvolume-controller waiting for a volume to be created, either by external provisioner "rancher.io/local-path" or manually created by system administrator Normal Provisioning 62s rancher.io/local-path_local-path-provisioner-6b84988bf9-tx8mz_1896d824-f862-4cbf-912a-c8cc0ca05574 External provisioner is provisioning volume for claim "userns1/mysql-pv-claim-sc" Normal ProvisioningSucceeded 60s rancher.io/local-path_local-path-provisioner-6b84988bf9-tx8mz_1896d824-f862-4cbf-912a-c8cc0ca05574 Successfully provisioned volume pvc-dc48253c-82dc-42a4-a7c6-aaddc97c9b8a C:\Users\user>
MySQL'in çalıştığını doğrulama
Uygulamanın çalıştığını doğrulamak için şunu yazın:
kubectl exec <your-pod-with-the-app> -i -t -n <your-namespace> -- mysql -p
İstendiğinde parolayı belirtin. Parola dosyanızda mysql-deployment
yer alır.
Aşağıda örnek bir çıkış verilmişti.
C:\Users\user>kubectl exec mysql-695c4d9dcd-rvzff -i -t -n userns1 -- mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Dağıtımı silme
Dağıtımı silmek için dağıtılan nesneleri ada göre silin. Bu nesneler dağıtım, hizmet ve PVC'yi içerir.
kubectl delete deployment <deployment-name>,svc <service-name> -n <your-namespace>
kubectl delete pvc <your-pvc-name> -n <your-namespace>
Dağıtımı ve hizmeti sildiğinizde örnek çıktısını aşağıda bulabilirsiniz.
C:\Users\user>kubectl delete deployment,svc mysql -n userns1
deployment.apps "mysql" deleted
service "mysql" deleted
C:\Users\user>
PVC'yi sildiğinizde örnek çıktısını aşağıda bulabilirsiniz.
C:\Users\user>kubectl delete pvc mysql-pv-claim-sc -n userns1
persistentvolumeclaim "mysql-pv-claim-sc" deleted
C:\Users\user>
Sonraki adımlar
Kubectl aracılığıyla ağ yapılandırmayı anlamak için bkz . Azure Stack Edge Pro cihazında durum bilgisi olmayan uygulama dağıtma
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin