使用k8s部署mysql服務器,並採用nfs做數據持久化

1、創建mysql配置文件(nfs存儲)

# mkdir mysql

# cd mysql/

# cat mysql-claim.yaml

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

name: mysql-claim

annotations:

volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: "10Gi"

2、創建mysql密碼(secret)

# cat mysql-dev-secret.yaml

apiVersion: v1

kind: Secret

metadata:

name: mysql-dev-secret

type: Opaque

data:

MYSQL_ROOT_PASSWORD: cGFzc3dvcmQ=

---

apiVersion: v1

kind: ConfigMap

metadata:

name: mysql-config

data:

my.cnf: |

[mysqld]

pid-file=/var/run/mysqld/mysqld.pid

socket=/var/run/mysqld/mysqld.sock

datadir=/var/lib/mysql

symbolic-links=0

default_storage_engine=innodb

skip_external_locking

skip_host_cache

skip_name_resolve

default_authentication_plugin=mysql_native_password

註明:

#Secret有三種類型:

#Opaque:base64編碼格式的Secret,用來存儲密碼、密鑰等;但數據也通過base64 –decode解碼得到原始數據,所有加密性很弱。

# echo -n cGFzc3dvcmQ= |base64 --decode #通過 base64 將 Value 反編碼

password

3、創建mysql service文件

# cat mysql-svc.yaml

apiVersion: v1

kind: Service

metadata:

name: mysql

spec:

selector:

k8s-app: mysql

ports:

- nodePort: 30306

protocol: TCP

port: 3306

targetPort: 3306

type: NodePort

4、創建mysql 部署文件

# cat mysql-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: mysql

namespace: default

labels:

k8s-app: mysql

spec:

replicas: 1

selector:

matchLabels:

k8s-app: mysql

template:

metadata:

labels:

k8s-app: mysql

spec:

containers:

- image: mysql:5.7.28

name: mysql

imagePullPolicy: Always

envFrom:

- secretRef:

name: mysql-dev-secret #調用密碼文件

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: nfs-pv

mountPath: /var/lib/mysql

volumes: # 配置pv

- name: mysql-config #調用config文件

configMap:

name: mysql-config

- name: timezone

hostPath:

path: /usr/share/zoneinfo/Asia/Shanghai

- name: nfs-pv

persistentVolumeClaim:

claimName: mysql-claim #調用存儲文件

5.使用kubectl命令及以上yaml文件部署mysql

# kubectl apply -f ./

# kubectl get pods


使用k8s部署mysql服務器,並採用nfs做數據持久化


# kubectl exec -it mysql-6c6857b4d4-8h9kz bash

# mysql -uroot -p'password'


使用k8s部署mysql服務器,並採用nfs做數據持久化


分享到:


相關文章: