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

news/2024/7/24 2:29:03 标签: kubernetes, 容器, containerd, busybox, mountPath

目录

一.设备条件介绍 

二.我的目的

三.问题所在

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>

http://www.niftyadmin.cn/n/5413063.html

相关文章

基于YOLOv5的驾驶员疲劳驾驶行为​​​​​​​检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了疲劳驾驶行为检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析。 博主简介 AI小怪兽&#xff0c;YOLO骨灰级玩家&#xff0c;1&#xff09;YOLOv5、v7、v8优化创新&#xff0c;轻松涨点和模型轻量…

腾讯云服务器和阿里云服务器价格测评_2024年费用大PK

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器61元一年&#xff0c;2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

leetCode刷题 4.寻找两个正序数组的中位数

目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&…

突破编程_C++_设计模式(外观模式)

1 外观模式的基本概念 C 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它为子系统中的一组接口提供了一个统一的高级接口&#xff0c;从而使得子系统更容易使用。外观模式定义了一个高层次的接口&#xff0c;这个接口使得这一子系统更加容…

★【二叉搜索树插入新的节点】【二叉搜索树】Leetcode 701. 二叉搜索树中的插入操作

【二叉搜索树插入新的节点】【二叉搜索树】Leetcode 701. 二叉搜索树中的插入操作 关键点&#xff1a;解法 递归法解法 迭代法 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 关键点&#xff1a; 关键点&#xff1a; 二叉…

网络模型(OSI ——TCP/IP)

OSI七层模型 应用层 负责处理不同应用程序之间的通信&#xff0c;需要满足提供协议&#xff0c;确保数据发送方和接收方的正确 应用层提供的协议&#xff1a; HTTP:超文本传输协议&#xff0c;由于Web浏览器于Web服务器之间的通信 FTP:文本传输协议&#xff0c;用于文件的上传…

vue 使用vue-scroller 列表滑动到底部加载更多数据

安装插件 npm install vue-scroller -dmain.js import VueScroller from vue-scroller Vue.use(VueScroller)<template><div class"wrap"><div class"footer"><div class"btn" click"open true">新增</d…

操作系统的基本概念2-存储管理

存储管理是计算机系统中的一个重要组成部分&#xff0c;它负责管理计算机系统中的存储资源&#xff0c;包括内存和外存。存储管理的主要目标是有效地组织和管理存储空间&#xff0c;以满足程序的运行需求&#xff0c;并提高系统的性能和可靠性。 在计算机系统中&#xff0c;存…