1.安装好k8s
2.安装helm,用来安装nfs组件
curl -fsSL -o get_helm.sh https://gh-proxy.com/https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod +x get_helm.sh
./get_helm.sh
helm completion bash | sudo tee /etc/bash_completion.d/helm
source <(helm completion bash)
3.安装nfs客户端,每个节点都安装
yum install nfs-utils #各节点都要安装,nfs服务器目录777权限
echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
sysctl -w sunrpc.tcp_slot_table_entries=128
4.编写k8s的nfs的yaml
replicaCount: 1
image:
repository: registry.cn-hangzhou.aliyuncs.com/namespace_explore/nfs-subdir-external-provisioner
tag: v4.0.2
nfs:
server: "nfs服务器路径"
path: /
mountOptions: [vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport] #阿里云使用,其他的去掉
5.安装k8s的nfs组件
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
helm repo update
helm install nfs-subdir-external-provisioner -f helm-nfs-client-provisioner.yaml nfs-subdir-external-provisioner/nfs-subdir-external-provisioner -n nfs
6.mysql测试
6.1 编写 pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql_pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-client
resources:
requests:
storage: 1Gi
6.2编写mysql.yaml
apiVersion: v1
kind: Service
metadata:
name: minimysql
labels:
app: minimysql
spec:
type: NodePort
ports:
- name: minimysql
port: 3306
targetPort: 3306
nodePort: 30336
selector:
app: minimysql
---
apiVersion: v1
kind: Service
metadata:
name: minimysql-cip
labels:
app: minimysql
spec:
ports:
- name: minimysql
port: 3306
targetPort: 3306
selector:
app: minimysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minimysql
labels:
app: minimysql
spec:
replicas: 1
selector:
matchLabels:
app: minimysql
template:
metadata:
labels:
app: minimysql
spec:
containers:
- name: minimysql
image: mariadb:latest
imagePullPolicy: Always
ports:
- containerPort: 3306
env:
- name: TZ
value: Asia/Shanghai
- name: MYSQL_ROOT_PASSWORD
value: "12345678"
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumes:
- name: data
persistentVolumeClaim:
claimName: mysql_pvc
readOnly: false
7.执行
kubectl apply -f pvc.yaml
kubectl apply -f mysql.yaml
8.删除
kubectl delete -f pvc.yaml #如果数据需要保留,不要执行这句
kubectl delete -f mysql.yaml #删除控制器,重新安装会使用原来创建的pvc