在 Windows 10 | Docker Desktop | Kubernetes 环境 使用 hostPath / local 为 POD 配置本机目录

6 篇文章 0 订阅
2 篇文章 0 订阅
  1. 进入 wsl
# 以下目录根据需要创建,不限制位置
mkdir /data/nginx
# 以下目录必须在 /mnt/wsl 中创建
mkdir /mnt/wsl/nginx
# 链接目录
sudo mount --bind /data/nginx /mnt/wsl/nginx
  1. 配置 host-path-test POD
# kubectl create -f host-path-test.yaml
# kubectl delete -f host-path-test.yaml

---
kind: Pod
apiVersion: v1
metadata:
  namespace: arno
  name: host-path-test
spec:
  containers:
    - name: host-path-test-container
      image: nginx:1.23.1
      ports:
        - containerPort: 80
          name: nginx
      volumeMounts:
        - mountPath: /data
          name: data
  volumes:
    - name: data
      hostPath:
        # 必须以 /run/desktop/mnt/host 开头
        # /run/desktop/mnt/host/wsl/nginx 对应上面创建的 /mnt/wsl/nginx
        path: /run/desktop/mnt/host/wsl/nginx
        type: Directory
  nodeSelector:
    kubernetes.io/hostname: docker-desktop
  1. 部署 host-path-test POD
echo test > /data/nginx/index.html

# 创建 POD
kubectl create -f host-path-test.yaml
DOCKER_ID=`docker ps -q -f name=host-path-test`
docker exec -it ${DOCKER_ID} ls -lah /data
docker exec -it ${DOCKER_ID} cat /data/index.html

# 删除 POD
kubectl delete -f host-path-test.yaml
  1. 配置 local-test SC/PV/PVC/POD 文件
# kubectl create -f local-test.yaml
# kubectl delete -f local-test.yaml

---
# 定义 local-storage 存储类
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  namespace: arno
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

---
# 创建 data 静态卷
kind: PersistentVolume
apiVersion: v1
metadata:
  namespace: arno
  name: data
spec:
  capacity:
    storage: 50Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    # 必须以 /run/desktop/mnt/host 开头
    # /run/desktop/mnt/host/wsl/nginx 对应上面创建的 /mnt/wsl/nginx
    path: /run/desktop/mnt/host/wsl/nginx
  nodeAffinity:
    required:
      # 将 静态卷 固定在 docker-desktop 节点
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - docker-desktop

---
# 创建 nginx-pvc 申领
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  namespace: arno
  name: nginx-pvc
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

---
# 创建 local-test POD
kind: Pod
apiVersion: v1
metadata:
  namespace: arno
  name: local-test
spec:
  containers:
    - name: local-test-container
      image: nginx:1.23.1
      ports:
        - containerPort: 80
          name: nginx
      volumeMounts:
        - mountPath: /data
          name: data
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: nginx-pvc
  nodeSelector:
    kubernetes.io/hostname: docker-desktop
  1. 部署 local-test local-test SC/PV/PVC/POD
echo test2 > /data/nginx/index2.html

# 创建 SC/PV/PVC/POD
kubectl create -f local-test.yaml
kubectl get pv -n arno
kubectl get pvc -n arno
DOCKER_ID=`docker ps -q -f name=local-test`
docker exec -it ${DOCKER_ID} ls -lah /data
docker exec -it ${DOCKER_ID} cat /data/index2.html

# 删除 SC/PV/PVC/POD
kubectl delete -f local-test.yaml
  1. 参考:
    1. Unable to mount volume using hostPath
    2. #5325 (comment)
    3. Kubernetes Volumes not correctly mounted with WSL2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
迎访问我的博客 原文 天天成长 - 在 Windows 10 | Docker Desktop | Kubernetes 环境 使用 hostPath / local 为 POD 配置本机目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值