Kubernetes 是一款流行的容器編排工具,可以輕松管理云端應(yīng)用程序的部署和擴(kuò)展。在 Kubernetes 中,MySQL 是一款廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)。而 PV,即持久化卷,是 Kubernetes 中用于管理數(shù)據(jù)存儲(chǔ)的組件。接下來,我們將探討如何使用 Kubernetes 和 PV 部署 MySQL。
# 創(chuàng)建 MySQL 存儲(chǔ)類
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: mysql-storage-class
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
region: us-west-2
encrypted: 'false'
# 創(chuàng)建 MySQL PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
storageClassName: mysql-storage-class
persistentVolumeReclaimPolicy: Retain
awsElasticBlockStore:
volumeID:fsType: ext4
# 創(chuàng)建 MySQL PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: mysql-storage-class
以上 YAML 文件創(chuàng)建了一個(gè)名為 `mysql-storage-class` 的存儲(chǔ)類,使用 AWS EBS 提供存儲(chǔ)服務(wù)。然后創(chuàng)建了一個(gè)名為 `mysql-pv` 的持久化卷,使用 `mysql-storage-class` 存儲(chǔ)類,并將容量設(shè)置為 10GB,訪問模式為 ReadWriteOnce,并設(shè)置 PV 回收策略為 Retain。最后,創(chuàng)建一個(gè)名為 `mysql-pvc` 的 PVC,也使用存儲(chǔ)類 `mysql-storage-class`,容量也為 10GB。
現(xiàn)在,我們可以使用 MySQL Docker 鏡像創(chuàng)建一個(gè) MySQL Deployment。
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pvc
以上 YAML 文件創(chuàng)建了一個(gè)名為 `mysql` 的 Deployment 和 Service。該 Deployment 使用 MySQL 5.7 版本的 Docker 鏡像,配置了根密碼,通過 Volume 將 `/var/lib/mysql` 掛載到持久化卷 `mysql-pvc` 以實(shí)現(xiàn)數(shù)據(jù)持久化。Service 表示外部可以通過 Load Balancer 訪問 MySQL,監(jiān)聽 3306 端口。
這樣,通過 Kubernetes 和 PV,我們就可以輕松管理 MySQL 數(shù)據(jù)的持久化。在 Kubernetes 中,還有更多可以使用的組件,例如 Secret、ConfigMap,可以方便地管理敏感信息和配置文件。歡迎大家深入了解并使用 Kubernetes,提高應(yīng)用程序的彈性和可靠性。