k8s中镜像导出的报错 not found

1.查看镜像

输入命令crictl images ls查看镜像

[root@master1 spider]# crictl images ls
IMAGE                                                                   TAG                 IMAGE ID            SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni                       v3.27.4             dc6f84c32585f       88.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns                   1.9.3               5185b96f0becf       14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache        1.22.20             ff71cd4ea5ae5       30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver            v1.26.15            61669ae28d85c       36.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager   v1.26.15            3b418eef6821c       33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers          v3.27.4             6b1e38763f401       33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy                v1.26.15            6c84132270a33       25.4MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-rbac-proxy           v0.11.0             29589495df8d9       19.2MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler            v1.26.15            5626d764f1326       17.9MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node-exporter             v1.3.1              1dbe0e9319764       10.3MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node                      v3.27.4             3dd4390f2a85a       117MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause                     3.9                 e6f1816883972       322kB

2.导出镜像

[root@master1 ~]# ctr image export b.tar dc6f84c32585f
WARN[0000] DEPRECATION: The `mirrors` property of `[plugins."io.containerd.grpc.v1.cri".registry]` is deprecated since containerd v1.5 and will be removed in containerd v2.0. Use `config_path` instead.
ctr: image "dc6f84c32585f": not found
[root@master1 ~]# ctr image export b.tar registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.27.4
WARN[0000] DEPRECATION: The `mirrors` property of `[plugins."io.containerd.grpc.v1.cri".registry]` is deprecated since containerd v1.5 and will be removed in containerd v2.0. Use `config_path` instead.
ctr: image "registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.27.4": not found

可以看到提示镜像不存在,根据crictl命令查看到镜像是存在的

搜了一下两者的区别

ctr:containerd本身的CLI
crictl :Kubernetes社区的专门CLI工具

Kubernetes的镜像是放在k8s.io的namespace下的

ctr -n k8s.io image export b.tar 镜像名称:版本号


 

[root@master1 ~]# ctr -n k8s.io image export b.tar registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.27.4
WARN[0000] DEPRECATION: The `mirrors` property of `[plugins."io.containerd.grpc.v1.cri".registry]` is deprecated since containerd v1.5 and will be removed in containerd v2.0. Use `config_path` instead.
[root@master1 ~]# ls
111              a.tar        dc6f84c32585f  ksp-v341-v126.yaml   kubekey-v3.1.6-linux-amd64.tar.gz  mysql-secret.yaml  test
anaconda-ks.cfg  b.tar        jiaoben.sh     ksp-v341-v1288.yaml  metrics-server-components.yaml     Redis-cluster
application      config.yaml  kk             kubekey              mysql                              spider
[root@master1 ~]#

可以看到镜像已经导出

### 问题分析 在 Kubernetes 中启动 Pod 时遇到 `nfs protocol not supported` 错误,通常表明 NFS 协议未被正确支持或配置。这可能是由于以下原因之一引起的: 1. **NFS 客户端未安装**:节点上可能缺少必要的 NFS 客户端工具。 2. **Kubernetes 节点的内核不支持 NFS 协议**:某些自定义内核可能未启用 NFS 支持。 3. **NFS 版本不匹配**:Pod 和 NFS 服务器之间的协议版本可能存在冲突。 以下是解决此问题的详细方法[^1]。 --- ### 解决方案 #### 检查 NFS 客户端是否已安装 确保所有 Kubernetes 节点上都已安装 NFS 客户端工具。可以通过以下命令检查并安装: ```bash # 检查是否已安装 NFS 客户端 dpkg -l | grep nfs-common # 对于基于 Debian 的系统 rpm -qa | grep nfs-utils # 对于基于 RHEL 的系统 # 如果未安装,则执行以下命令进行安装 sudo apt-get install nfs-common # Debian/Ubuntu sudo yum install nfs-utils # CentOS/RHEL ``` 如果 NFS 客户端未安装,安装后需要重启节点以确保生效[^2]。 --- #### 验证内核支持 NFS 协议 某些自定义内核可能未启用 NFS 支持。可以通过以下命令检查当前内核是否支持 NFS: ```bash cat /proc/filesystems | grep nfs ``` 如果没有输出,则说明当前内核不支持 NFS。可以尝试切换到标准内核版本,或者重新编译内核以添加 NFS 支持[^3]。 --- #### 检查 NFS 版本兼容性 NFS 协议有多个版本(如 v3、v4),Pod 和 NFS 服务器之间可能因版本不匹配导致错误。可以在 PersistentVolume (PV) 或 StorageClass 的配置中明确指定 NFS 版本。 以下是一个使用 NFS v4 的 PV 示例配置: ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: nfs-server.example.com path: /exports/data readOnly: false mountOptions: - vers=4.0 # 明确指定 NFS 版本 ``` 通过 `mountOptions` 字段,可以强制指定 NFS 协议版本。如果不确定服务器支持的版本,可以从较低版本(如 `vers=3`)开始测试[^4]。 --- #### 使用调试工具验证挂载 在节点上手动尝试挂载 NFS 共享,以排除配置问题: ```bash sudo mkdir -p /mnt/test sudo mount -t nfs -o vers=4.0 nfs-server.example.com:/exports/data /mnt/test df -hT | grep nfs ``` 如果挂载失败,可以根据错误信息进一步排查问题。 --- #### 更新 kubelet 配置 在某些情况下,Kubernetes 的 kubelet 可能需要额外配置以支持 NFS。可以通过以下命令检查 kubelet 是否启用了 `--feature-gates` 参数: ```bash ps aux | grep kubelet ``` 如果未启用相关功能,可以更新 kubelet 配置文件(通常是 `/var/lib/kubelet/config.yaml`),并在其中添加必要的选项[^5]。 --- ### 总结 上述方法涵盖了从客户端工具安装、内核支持验证、NFS 版本兼容性调整到手动调试等多个方面。根据具体情况逐一排查,通常可以有效解决 `nfs protocol not supported` 错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值