记一次busybox-mountPath简单但容易忽略的问题open /proc/self/fd: no such file or directory

目录

一.设备条件介绍 

二.我的目的

三.问题所在

1.在用以下pod进行测试的时候出现问题

2.报错

3.解决

4.解决完成


 

一.设备条件介绍 

[root@k8s-master pv]# containerd --version
containerd containerd.io 1.6.25 d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
​
[root@k8s-master pv]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"28", GitVersion:"v1.28.2", GitCommit:"89a4ea3e1e4ddd7f7572286090359983e0387b2f", GitTreeState:"clean", BuildDate:"2023-09-13T09:34:32Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

二.我的目的

1.创建pv、nfs,再创建pvc,并且通过pvc和nfs去存储pod产生的信息(以nginx的访问日志为例的)。在myns命名空间里创建好了my-pv1、my-pv2,并且创建好了my-pvc1、my-pvc2,都绑定好了。

[root@k8s-master pv]# cat /etc/exports
/root/pv/pv1 192.168.2.0/24(rw,no_root_squash)
/root/pv/pv2 192.168.2.0/24(rw,no_root_squash)

[root@k8s-master pv]# kubectl get pv,pvc -n myns
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM          STORAGECLASS   REASON   AGE
persistentvolume/my-pv1   1G         RWX            Retain           Bound    myns/my-pvc1                           4m22s
persistentvolume/my-pv2   1G         RWX            Retain           Bound    myns/my-pvc2                           4m22s
NAME                            STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/my-pvc1   Bound    my-pv1   1G         RWX                           4m14s
persistentvolumeclaim/my-pvc2   Bound    my-pv2   1G         RWX                           4m14s

2.这是我的pv,pvc文件

[root@k8s-master pv]# cat pv.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: myns

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv1
  namespace: myns
spec:
  capacity:
    storage: 1G
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /root/pv/pv1
    server: 192.168.2.150

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv2
  namespace: myns
spec:
  capacity: 
    storage: 1G
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /root/pv/pv2
    server: 192.168.2.150

这些内容能绑定应该都是正确的

[root@k8s-master pv]# cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc1
  namespace: myns
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 500M

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc2
  namespace: myns
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 600M

三.问题所在

1.在用以下pod进行测试的时候出现问题

[root@k8s-master pv]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name: my-pod1
  namespace: myns
spec:
  containers:
  - name: my-nginx1
    image: nginx
    ports:
    - name: nginx-port1
      containerPort: 80
    volumeMounts:
    - name: my-volume
      mountPath: /var/log/nginx
  - name: my-busybox1
    image: busybox
    command: ["/bin/sh","-c","tail -f /access.log"]
    volumeMounts:
    - name: my-volume
      mountPath: /
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-pvc1

---

apiVersion: v1
kind: Pod
metadata:
  name: my-pod2
  namespace: myns
spec:
  containers:
  - name: my-nginx2
    image: nginx
    ports:
    - name: nginx-port2
      containerPort: 80
    volumeMounts:
    - name: my-volume
      mountPath: /var/log/nginx
  - name: my-busybox2
    image: busybox
    command: ["/bin/sh","-c","tail -f /access.log"]
    volumeMounts:
    - name: my-volume
      mountPath: /
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-pvc2

2.报错

Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error closing exec fds: open /proc/self/fd: no such file or directory: unknown

[root@k8s-master pv]# kubectl describe pod my-pod1 -n myns
Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error closing exec fds: open /proc/self/fd: no such file or directory: unknown

3.解决

将上文pod的yaml中mountPath改来尽量不使用“/”

原因:在 BusyBox 容器中使用 / 作为 volume 的 mountPath 通常会失败,因为该路径本身不存在。如果你想要在 BusyBox 容器中使用 volume,可以考虑使用非根目录作为 mountPath,比如 /root/mnt 等等,这些目录一般存在于 BusyBox 的文件系统结构中,可以正常使用。所以在精简的镜像中尽量不要使用“/”作为挂载目录。

[root@k8s-master pv]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata: 
  name: my-pod1
  namespace: myns
spec:
  containers:
  - name: my-nginx1
    image: nginx
    ports:
    - name: nginx-port1
      containerPort: 80
    volumeMounts:
    - name: my-volume
      mountPath: /var/log/nginx
  - name: my-busybox1
    image: busybox
    command: ["/bin/sh","-c","tail -f /logs/access.log"]
    volumeMounts:
    - name: my-volume
      mountPath: /logs
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-pvc1

---

apiVersion: v1
kind: Pod
metadata:
  name: my-pod2
  namespace: myns
spec:
  containers:
  - name: my-nginx2
    image: nginx
    ports:
    - name: nginx-port2
      containerPort: 80
    volumeMounts:
    - name: my-volume
      mountPath: /var/log/nginx
  - name: my-busybox2
    image: busybox
    command: ["/bin/sh","-c","tail -f /logs/access.log"]
    volumeMounts:
    - name: my-volume
      mountPath: /logs
  volumes:
  - name: my-volume
    persistentVolumeClaim:
      claimName: my-pvc2

4.解决完成

[root@k8s-master pv]# kubectl apply -f pod.yaml 
pod/my-pod1 created
pod/my-pod2 created
[root@k8s-master pv]# kubectl get pods -n myns
NAME      READY   STATUS    RESTARTS   AGE
my-pod1   2/2     Running   0          8s
my-pod2   2/2     Running   0          8s



[root@k8s-master pv]# kubectl get pv,pvc,pod -n myns -o wide
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM          STORAGECLASS   REASON   AGE   VOLUMEMODE
persistentvolume/my-pv1   1G         RWX            Retain           Bound    myns/my-pvc1                           40m   Filesystem
persistentvolume/my-pv2   1G         RWX            Retain           Bound    myns/my-pvc2                           40m   Filesystem

NAME                            STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
persistentvolumeclaim/my-pvc1   Bound    my-pv1   1G         RWX                           40m   Filesystem
persistentvolumeclaim/my-pvc2   Bound    my-pv2   1G         RWX                           40m   Filesystem

NAME          READY   STATUS    RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
pod/my-pod1   2/2     Running   0          4m12s   10.244.107.197   k8s-node3   <none>           <none>
pod/my-pod2   2/2     Running   0          4m12s   10.244.36.69     k8s-node1   <none>           <none>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

树下一少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值