建立本地目錄用于mysql持久化
建立持久化檔案
mkdir -p /Users/renzhengxin/IdeaProjects/k8s/mysql/v56/data
建立持久卷
建立持久卷定義
vim mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysal56-pv
labels:
pv: mysql56-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
#此處可自定義本地已存在的路徑
path: /Users/renzhengxin/IdeaProjects/k8s/mysql/v56/data
執行建立持久卷:
kubectl create -f mysql-pv.yaml
檢視持久卷:
kubectl get pv

建立持久卷聲明
建立持久卷聲明定義
vim mysql-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql56-pvc
spec:
# 必須聲明下面此行,否則會自動建立pv而不是綁定到已有pv
storageClassName: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
selector:
matchLabels:
pv: mysql56-pv
執行建立持久卷聲明:
kubectl create -f mysql-pvc.yaml
檢視持久卷聲明:
kubectl get pvc
檢視持久卷:
kubectl get pv
建立Deployment
建立Deployment定義
vim mysql-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql56-deploy
spec:
replicas: 1
selector:
matchLabels:
name: mysql56-ops
template:
metadata:
labels:
name: mysql56-ops
spec:
containers:
- name: mysql56
# 此處為M1版本的macOS使用的鏡像,一般非arm架構的mac/linux使用mysql:5.6即可
image: amd64/mysql:5.6
imagePullPolicy: IfNotPresent
env:
# 設定mysql的密碼
- name: MYSQL_ROOT_PASSWORD
value: "mysql56"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: "/var/lib/mysql"
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql56-pvc
執行建立Deployment:
kubectl create -f mysql-deploy.yaml
檢視Deployment:
kubectl get deploy
檢視Pod:
kubectl get po
測試轉發到本地端口并連接配接:
kubectl port-forward deploy/mysql56-deploy 30056:3306
建立服務
建立服務定義
vim mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql56-svc
labels:
name: mysql56-svc
spec:
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
# nodePort的端口号必須大于30000
nodePort: 30056
selector:
name: mysql56-ops
執行建立服務:
kubectl create -f mysql-svc.yaml
檢視服務:
kubectl get svc
本地mysql-client連接配接: