Trident: CSINode 不包含驱动程序 csi.trident.netapp.io

创建于 2020-10-21  ·  6评论  ·  资料来源: NetApp/trident

描述
使用 trident 运算符和 kubernetes 1.17.6,我能够创建持久卷,但无法将它们挂载到 pod 中。

获取 pod 描述时,返回以下错误:
CSINode does not contain driver csi.trident.netapp.io

环境

  • 三叉戟版本:[20.07.1]
  • 使用的 Trident 安装标志:[没有自定义标志,因为我们使用默认的 /var/lib/kubelet 位置]
  • 容器运行时:[Docker 19.3.12]
  • Kubernetes 版本:[1.17.6]
  • Kubernetes 编排器:[无]
  • Kubernetes 启用功能门:[不需要]
  • 操作系统:[Centos 7 - 3.10.0-1062.12.1.el7.x86_64]
  • NetApp 后端类型:[ OnTap 9.7 ]
  • 其他:

重现
按照此处提供的方式安装运算符: https ://netapp-trident.readthedocs.io/en/stable-v20.07/kubernetes/deploying/operator-deploy.html

创建存储类和消费者后,pv 被绑定,但 pod 无法在本地将卷附加到工作人员

预期行为
Pod 预计会挂载该卷并正在运行。 相反,它仍然处于“待处理”状态
附加上下文
吊舱说明:
```kubectl -n 测试描述 po web-0
警告 FailedScheduling 11s (x2 over 12s) default-scheduler error while running "VolumeBinding" filter plugin for pod "web-0": pod has unbound immediate PersistentVolumeClaims
正常计划的 9s 默认调度程序已成功将 test/web-0 分配给 hh1kbw02x
警告 FailedAttachVolume(x6 以上) attachdetach-controller AttachVolume.Attach 卷“pvc-934230b9-900c-4539-bb0c-8feff6e18628”失败:CSINode hh1kbw02x 不包含驱动程序 csi.trident.netapp.io
警告 FailedAttachVolume(x6 以上) attachdetach-controller AttachVolume.Attach 卷“pvc-f4c2b654-ff73-4dd5-84ef-a31491b83f26”失败:CSINode hh1kbw02x 不包含驱动程序 csi.trident.netapp.io



Logs from trident on this worker:

kubectl -n trident 日志 trident-csi-9sgrt -c trident-main -f
time="2020-10-21T17:15:31Z" level=debug msg="n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> nPUT https://10.111.4.90 :34571/trident/v1/node/hh1kbw02xnHeaders: map[Content-Type:[application/json]]nBody: {n "name": "hh1kbw02x",n "ips": [n "10.49.12.102",n "172.17.0.1"n ]n}n-------------------------------- -----------------------------------------------------------"
time="2020-10-21T17:15:32Z" level=debug msg="n<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


Logs from registrar sidecar on this worker:

kubectl -n trident 日志 trident-csi-9sgrt -c driver-registrar
I1021 17:14:18.636803 6672 main.go:110] 版本:v1.3.0-0-g6e9fff3e
I1021 17:14:18.636888 6672 main.go:120] 尝试打开 gRPC 连接:“/plugin/csi.sock”
I1021 17:14:18.636908 6672 connection.go:151] 连接到 unix:///plugin/csi.sock
I1021 17:14:18.637420 6672 main.go:127] 调用 CSI 驱动程序以发现驱动程序名称
I1021 17:14:18.637435 6672 connection.go:180] GRPC 调用:/csi.v1.Identity/GetPluginInfo
I1021 17:14:18.637442 6672 connection.go:181] GRPC 请求:{}
I1021 17:14:18.639851 6672 connection.go:183] GRPC 响应:{"name":"csi.trident.netapp.io","vendor_version":"20.07.1"}
I1021 17:14:18.640235 6672 connection.go:184] GRPC 错误:
I1021 17:14:18.640242 6672 main.go:137] CSI 驱动程序名称:“csi.trident.netapp.io”
I1021 17:14:18.648537 6672 node_register.go:51] 在以下位置启动注册服务器:/registration/csi.trident.netapp.io-reg.sock
I1021 17:14:18.648666 6672 node_register.go:60] 注册服务器开始于:/registration/csi.trident.netapp.io-reg.sock


Description of csi node

kubectl 获取 csinode hh1kbw02x -n 三叉戟 -o yaml
api版本:storage.k8s.io/v1
种类:CSINode
元数据:
创建时间戳:2020-09-10T07:58:40Z
名称:hh1kbw02x
业主参考:

  • api版本:v1
    种类:节点
    名称:hh1kbw02x
    用户名:d3db28d6-e2be-4ad4-8534-c853b2e025b5
    资源版本:“30914526”
    自链接:/apis/storage.k8s.io/v1/csinodes/hh1kbw02x
    用户名:a764977a-be67-4ee9-8b7e-9aac304e0890
    规格:
    司机:空

Kubelet 日志:
11 月 6 日 10:14:18 hh1kbw01x kubelet: I1106 10:14:18.883059 2393 reconciler.go:209] operationExecutor.VerifyControllerAttachedVolume 为卷“pvc-3bcc4e38-2e69-4541-9910-711d2c086671”(唯一名称:“kubernetes. csi/csi.trident.netapp.io^pvc-3bcc4e38-2e69-4541-9910-711d2c086671") pod "web-0" (UID: "a235d5f9-05bf-4c77-8a84-e48f2f657d98")
11 月 6 日 10:14:18 hh1kbw01x kubelet: E1106 10:14:18.883223 2393 nestedpendingoperations.go:301] 操作“{v olumeName:kubernetes.io/csi/csi.trident.netapp.io ^pvc-3bcc4e38-2e69- 4541-9910-711d2c086671 podName: nodeName:}”失败。 在 2020-11-06 10:14:19.383183856 +0100 CET m=+1353591.737508759 (durationBeforeRetry 500ms) 之前不允许重试。 错误:“卷尚未添加到卷“pvc-3bcc4e38-2e69-4541-9910-711d2c086671”的节点卷状态中的 VolumesInUse 列表中(唯一名称:“kubernetes.io/csi/csi.trident.netapp.io ^pvc-3bcc4e38-2e69-4541-9910-711d2c086671") pod "web-0" (UID: "a235d5f9-05bf-4c77-8a84-e48f2f657d98") "
Nov 6 10:14:18 hh1kbw01x kubelet: I1106 10:14:18.983580 2393 reconciler.go:209] operationExecutor.VerifyControllerAttachedVolume 开始为卷“pvc-f138b6cc-988b-455c-bb2e-fce022755634”(唯一名称:“kubernetes.io/ csi/csi.trident.netapp.io^pvc-f138b6cc-988b-455c-bb2e-fce022755634") pod "web-0" (UID: "a235d5f9-05bf-4c77-8a84-e48f2f657d98")
11 月 6 日 10:14:18 hh1kbw01x kubelet: E1106 10:14:18.983662 2393 nestedpendingoperations.go:301] 操作“{v olumeName:kubernetes.io/csi/csi.trident.netapp.io ^pvc-f138b6cc-988b- 455c-bb2e-fce022755634 podName: nodeName:}" 失败。 在 2020-11-06 10:14:19.483629729 +0100 CET m=+1353591.837954619 (durationBeforeRetry 500ms) 之前不允许重试。 错误:“卷尚未添加到卷“pvc-f138b6cc-988b-455c-bb2e-fce022755634”的节点卷状态中的 VolumesInUse 列表中(唯一名称:“kubernetes.io/csi/csi.trident.netapp.io ^pvc-f138b6cc-988b-455c-bb2e-fce022755634") pod "web-0" (UID: "a235d5f9-05bf-4c77-8a84-e48f2f657d98") "
11 月 6 日 10:14:19 hh1kbw01x kubelet: I1106 10:14:19.385072 2393 reconciler.go:209] operationExecutor.VerifyControllerAttachedVolume 为卷“pvc-3bcc4e38-2e69-4541-9910-711d2c086671”(唯一名称:“kubernetes. csi/csi.trident.netapp.io^pvc-3bcc4e38-2e69-4541-9910-711d2c086671") pod "web-0" (UID: "a235d5f9-05bf-4c77-8a84-e48f2f657d98")
```

最有用的评论

所以我修好了,如果我可以这么说的话。 在阅读了外部存储配置器的工作原理并了解了使用 sidecar 容器注册驱动程序的概念后,我回顾了我们的设置。

这非常具有误导性,因为我们将 kubelet 配置为从位于 /var/lib/kubelet 下的配置文件开始,这是默认的根目录。

几个月前,我们决定拆分大脑,将 pod 和容器移动到单独的存储位置,因此我们将管理与操作分开

因此我们将配置文件中的 root-dir 改为指向 /containers 而不是 /var/lib/kubelet

默认的三叉戟供应商将在默认位置查找,并“嵌入”插件,可以这么说。

所以你需要检查两件事:

  1. ps aux | grep kubelet | grep -e 'root-dir -> 获取配置的文件夹(在我的例子中是 /container)
  2. 更改 trident_provisioner_cr.yaml,并通过添加参数“ kubeletDir ”对其进行自定义
    apiVersion: trident.netapp.io/v1 kind: TridentProvisioner metadata: name: trident namespace: trident spec: debug: true kubeletDir: /container

祝你好运。我要关闭这个了。

所有6条评论

Rancher RKE 和 K8S (v1.18.10) 和运行 Ubuntu 18.04.4 LTS 和 Docker 19.3.13 的节点存在相同的问题,其余与上述环境匹配...

与 ubuntu 18.04 上的上游 k8s 相同

我能够通过重新部署 trident-csi 守护进程和部署来“解决”它,然后重新启动 kubelet

是的。 我使用tridentctl而不是运算符。

所以我修好了,如果我可以这么说的话。 在阅读了外部存储配置器的工作原理并了解了使用 sidecar 容器注册驱动程序的概念后,我回顾了我们的设置。

这非常具有误导性,因为我们将 kubelet 配置为从位于 /var/lib/kubelet 下的配置文件开始,这是默认的根目录。

几个月前,我们决定拆分大脑,将 pod 和容器移动到单独的存储位置,因此我们将管理与操作分开

因此我们将配置文件中的 root-dir 改为指向 /containers 而不是 /var/lib/kubelet

默认的三叉戟供应商将在默认位置查找,并“嵌入”插件,可以这么说。

所以你需要检查两件事:

  1. ps aux | grep kubelet | grep -e 'root-dir -> 获取配置的文件夹(在我的例子中是 /container)
  2. 更改 trident_provisioner_cr.yaml,并通过添加参数“ kubeletDir ”对其进行自定义
    apiVersion: trident.netapp.io/v1 kind: TridentProvisioner metadata: name: trident namespace: trident spec: debug: true kubeletDir: /container

祝你好运。我要关闭这个了。

trident-csi daemonset pod 无法与trident-controller通信时,观察到类似的情况。 在这种情况下,这是由于网络策略阻止了它。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

khankth picture khankth  ·  4评论

tksm picture tksm  ·  4评论

stobias123 picture stobias123  ·  4评论

leemmcc picture leemmcc  ·  4评论

SuperBaobab picture SuperBaobab  ·  3评论