Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Azure Stack Edge Pro - GPU
Azure Stack Edge Pro 2
Azure Stack Edge Pro R
Azure Stack Edge Mini R
Artikel ini menunjukkan cara menyebarkan aplikasi stateful satu instans di Kube menggunakan StorageClass untuk menyediakan penyimpanan dan penyebaran secara dinamis. Penyebaran menggunakan perintah kubectl
pada kluster Kube yang ada dan menyebarkan aplikasi MySQL.
Prosedur ini ditujukan bagi mereka yang telah meninjau ulang penyimpanan Kube pada perangkat Azure Stack Edge Pro dan sudah tidak asing lagi dengan konsep penyimpanan Kube.
Prasyarat
Sebelum menyebarkan aplikasi stateful, lengkapi prasyarat berikut di perangkat Anda serta klien yang akan Anda gunakan untuk mengakses perangkat:
Untuk perangkat
- Anda memiliki informasi masuk ke perangkat Azure Stack Edge Pro 1-node.
- Perangkat diaktifkan. Lihat Mengaktifkan perangkat.
- Perangkat ini memiliki peran komputasi yang dikonfigurasi melalui portal Microsoft Azure dan memiliki kluster Kubernetes. Lihat Mengonfigurasi komputasi.
Untuk klien yang mengakses perangkat
- Anda memiliki sistem klien Windows yang akan digunakan untuk mengakses perangkat Azure Stack Edge Pro.
Klien menjalankan Windows PowerShell 5.0 atau yang lebih baru. Untuk mengunduh Windows PowerShell versi terbaru, buka Memasang Windows PowerShell.
Anda dapat menggunakan klien lain dengan Sistem operasi yang didukung dengan baik. Artikel ini menjelaskan prosedur saat menggunakan klien Windows.
Anda telah menyelesaikan prosedur yang dijelaskan dalam Mengakses kluster Kubernetes pada perangkat Azure Stack Edge Pro. Anda telah:
- Membuat namespace
userns1
melalui perintahNew-HcsKubernetesNamespace
. - Membuat pengguna
user1
melalui perintahNew-HcsKubernetesUser
. - Memberikan akses
user1
keuserns1
melalui perintahGrant-HcsKubernetesNamespaceAccess
. - Diinstal
kubectl
pada klien dan simpankubeconfig
file dengan konfigurasi pengguna ke C:\Users\<username>\.kube.
- Membuat namespace
Memastikan versi klien
kubectl
dipasang tidak melebihi satu versi dari versi master Kubernetes yang berjalan di perangkat Azure Stack Edge Pro Anda.- Menggunakan
kubectl version
untuk memeriksa versi kubectl yang berjalan pada klien. Catat versi lengkapnya. - Di IU lokal perangkat Azure Stack Edge Pro, buka Gambaran umum dan catat nomor perangkat lunak Kube.
- Verifikasi kedua versi ini untuk kompatibilitas dari pemetaan yang disediakan dalam versi Kubernetes yang Didukung.
- Menggunakan
Anda siap untuk menyebarkan aplikasi stateful di perangkat Azure Stack Edge Pro Anda.
Menyebarkan MySQL
Anda sekarang akan menjalankan aplikasi stateful dengan membuat Kubernetes Deployment dan menghubungkannya ke PV yang Anda buat pada langkah sebelumnya menggunakan PersistentVolumeClaim (PVC).
Semua perintah kubectl
yang Anda gunakan untuk membuat dan mengelola penyebaran aplikasi stateful perlu menentukan namespace yang terkait dengan konfigurasi. Untuk menentukan namespace dalam perintah kubectl, gunakan kubectl <command> -n <your-namespace>
.
Dapatkan daftar pod yang berjalan pada kluster Kube di namespace Anda. Pod merupakan sebuah kontainer aplikasi, atau proses, yang berjalan pada kluster Kubernetes Anda.
kubectl get pods -n <your-namespace>
Berikut adalah contoh penggunaan perintah:
C:\Users\user>kubectl get pods -n "userns1" No resources found in userns1 namespace. C:\Users\user>
Output{i>
Anda akan menggunakan file YAML berikut. File
mysql-deployment.yml
menjelaskan penyebaran yang menjalankan MySQL dan mereferensikan PVC. File mendefinisikan pemasangan volume untuk/var/lib/mysql
, dan kemudian membuat PVC yang membutuhkan volume sebesar 20-GB. PV dinamis disediakan dan PVC terikat dengan PV ini.Salin dan simpan file
mysql-deployment.yml
berikut ini ke dalam folder di klien Windows yang Anda gunakan untuk mengakses perangkat Azure Stack Edge Pro.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
Salin dan simpan sebagai file
mysql-pvc.yml
ke folder yang sama tempat Anda menyimpanmysql-deployment.yml
. Untuk menggunakan StorageClass bawaan yang perangkat Azure Stack Edge Pro pada disk data terlampir,storageClassName
atur bidang di objek PVC ke danase-node-local
accessModes harusReadWriteOnce
.Catatan
Pastikan bahwa file YAML memiliki indentasi yang benar. Anda dapat memeriksa dengan YAML lint untuk validasi dan kemudian simpan.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim-sc spec: storageClassName: ase-node-local accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
Sebarkan file
mysql-pvc.yaml
.kubectl apply -f <URI path to the mysql-pv.yml file> -n <your-user-namespace>
Berikut adalah sampel output{i>
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-pvc.yml" -n userns1 persistentvolumeclaim/mysql-pv-claim-sc created C:\Users\user>
Perhatikan nama PVC yang dibuat - dalam contoh ini,
mysql-pv-claim-sc
. Anda akan menggunakannya di langkah selanjutnya.Sebarkan isi file
mysql-deployment.yml
.kubectl apply -f <URI path to mysql-deployment.yml file> -n <your-user-namespace>
Berikut adalah sampel output{i>
C:\Users\user>kubectl apply -f "C:\stateful-application\mysql-deployment.yml" -n userns1 service/mysql created deployment.apps/mysql created C:\Users\user>
Tampilkan informasi tentang penyebaran.
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>
Daftar Pod yang dibuat oleh penyebaran.
kubectl get pods -l <app=label> -n <your-user-namespace>
Berikut ini adalah sampel output.
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>
Periksa PersistentVolumeClaim.
kubectl describe pvc <your-pvc-name>
Berikut ini adalah sampel output.
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>
Verifikasi bahwa MySQL sedang berjalan
Untuk memverifikasi bahwa aplikasi sedang berjalan, ketik:
kubectl exec <your-pod-with-the-app> -i -t -n <your-namespace> -- mysql -p
Ketika diminta, berikan kata sandi. Kata sandi ada di file mysql-deployment
Anda.
Berikut ini adalah sampel output.
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>
Menghapus penyebaran
Untuk menghapus penyebaran, hapus objek yang disebarkan menurut nama. Objek ini termasuk penyebaran, layanan, dan PVC.
kubectl delete deployment <deployment-name>,svc <service-name> -n <your-namespace>
kubectl delete pvc <your-pvc-name> -n <your-namespace>
Berikut merupakan sampel output saat Anda menghapus penyebaran dan layanan.
C:\Users\user>kubectl delete deployment,svc mysql -n userns1
deployment.apps "mysql" deleted
service "mysql" deleted
C:\Users\user>
Berikut merupakan sampel output saat Anda menghapus PVC.
C:\Users\user>kubectl delete pvc mysql-pv-claim-sc -n userns1
persistentvolumeclaim "mysql-pv-claim-sc" deleted
C:\Users\user>
Langkah berikutnya
Untuk memahami cara mengonfigurasi jaringan melalui kubectl, lihat Menerapkan aplikasi stateless pada perangkat Azure Stack Edge Pro