什么是MySQL?
MySQL 是一個開放源代碼的關系數據庫管理系統(RDBMS)。它是最流行的網站之一,如Facebook、Twitter、YouTube 等,以及許多其他網站的后端數據庫管理系統。MySQL 非常受歡迎,因為它易于使用、靈活適應多種應用程序、擁有廣泛的社區支持,并且可靠穩定。
什么是Kubernetes(K8s)?
Kubernetes 是一個自動化容器部署、伸縮和管理的開源平臺。Kubernetes 可以處理它所部署的應用程序的運行時環境,并通過自身的 API 進行通信和控制。Kubernetes 是一種容器編排技術,可以讓您輕松地管理和調度大型容器環境。
讓MySQL在Kubernetes中持久化存儲數據
當您在Kubernetes中使用MySQL時,數據是存儲在容器中的,容器掛掉或刪除時,數據也會隨之消失。因此,為了長期保存MySQL數據,需要使用持久化存儲。
步驟如下:
1.創建持久化存儲卷
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
2.在容器中掛載持久化存儲卷
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secrets
key: mysql-root-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
3.創建MySQL服務
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:
- name: mysql
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mysql
type: ClusterIP
4.部署應用程序
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: app-image
ports:
- containerPort: 80
env:
- name: MYSQL_HOST
value: mysql-service
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-secrets
key: mysql-user
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secrets
key: mysql-password
使用以上步驟,您實現了在Kubernetes中使用MySQL進行持久化存儲的過程。