k8s动态卷(storageClassName+nfs)使用详细例子

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值