环境
部署 Mysql 的前提是有 K8s 或者 k3s 。
[root@cs100 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3s-master Ready control-plane,master 26h v1.20.4+k3s1
NFS 服务创建
安装命令nfs
yum install nfs-utils -y
设置挂载路径
vim /etc/exports
/root/data/nfs *(rw,no_root_squash)
创建挂载路径
mkdir /root/data/nfs
启动nfs
systemctl start nfs
ps -ef | grep nfs
Mysql
Persistent Volume 和 Persistent Volume Claim,主要是管理服务持久化的存储资源 Volume。这里我们先创建 PV,再创建 PVC,将两者绑定。
mysql-nfs-pv.yaml
/root/data/nfs/mysql
要提前创建好文件夹mysql
cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-pv.yaml <<EOF
kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-nfs-pv
namespace: db-mysql
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /root/data/nfs/mysql
server: 192.168.72.100
EOF
mysql-nfs-pvc.yaml
cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-pvc.yaml <<EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-nfs-pvc
namespace: db-mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs
EOF
mysql-nfs-deploy.yaml
cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-deploy.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-nfs-deploy
namespace: db-mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql_nfs
template:
metadata:
labels:
app: mysql_nfs
spec:
containers:
- name: mysql57
image: mysql:5.7
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
args:
- --lower_case_table_names=1
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-nfs-pvc
EOF
mysql-nfs-svc.yaml
cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-svc.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: db-mysql
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 32306
selector:
app: mysql_nfs
EOF
创建命名空间
kubectl create namespace db-mysql
分别执行yaml
kubectl create -f mysql-nfs-pv.yaml
kubectl create -f mysql-nfs-pvc.yaml
kubectl create -f mysql-nfs-deploy.yaml
kubectl create -f mysql-nfs-svc.yaml
查看poddb-mysql mysql-nfs-deploy-5f4fc57696-7cjkn
[root@cs100 mysql57_nfs]# kubectl get pods -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system helm-install-traefik-rb69p 0/1 Completed 0 2d2h 10.42.0.9 k3s-master <none> <none>
kube-system metrics-server-86cbb8457f-nkck4 1/1 Running 2 2d2h 10.42.0.36 k3s-master <none> <none>
kube-system coredns-854c77959c-mvlqz 1/1 Running 2 2d2h 10.42.0.33 k3s-master <none> <none>
fleet-system fleet-agent-55bfc495bd-g7mt8 1/1 Running 2 2d1h 10.42.0.39 k3s-master <none> <none>
default seata-server-5ccbbdfb87-rnzp8 1/1 Running 2 47h 10.42.0.38 k3s-master <none> <none>
kube-system svclb-traefik-8rk4w 2/2 Running 6 2d2h 10.42.0.34 k3s-master <none> <none>
kube-system traefik-6f9cbd9bd4-ppcmc 1/1 Running 2 2d2h 10.42.0.32 k3s-master <none> <none>
kube-system local-path-provisioner-5ff76fc89d-s698r 1/1 Running 3 2d2h 10.42.0.40 k3s-master <none> <none>
db-mysql mysql-nfs-deploy-5f4fc57696-7cjkn 1/1 Running 0 20m 10.42.0.41 k3s-master <none> <none>
cattle-system cattle-cluster-agent-68b9fbcc5d-ghp2x 0/1 CrashLoopBackOff 228 2d1h 10.42.0.35 k3s-master <none> <none>
查看mysql数据
[root@cs100 mysql]# pwd
/root/data/nfs/mysql
[root@cs100 mysql]# ls
auto.cnf ca-key.pem ca.pem client-cert.pem client-key.pem ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql performance_schema private_key.pem public_key.pem server-cert.pem server-key.pem sys