天天看點

k8s部署單機版mysql5.6

建立本地目錄用于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

k8s部署單機版mysql5.6

建立持久卷聲明

建立持久卷聲明定義

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

k8s部署單機版mysql5.6

建立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

k8s部署單機版mysql5.6
k8s部署單機版mysql5.6

建立服務

建立服務定義

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

k8s部署單機版mysql5.6

本地mysql-client連接配接:

k8s部署單機版mysql5.6