描述
使用 trident 运算符和 kubernetes 1.17.6,我能够创建持久卷,但无法将它们挂载到 pod 中。
获取 pod 描述时,返回以下错误:
CSINode does not contain driver csi.trident.netapp.io
环境
重现
按照此处提供的方式安装运算符: 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
警告 FailedAttachVolume
Logs from trident on this worker:
kubectl -n trident 日志 trident-csi-9sgrt -c trident-main -f kubectl -n trident 日志 trident-csi-9sgrt -c driver-registrar kubectl 获取 csinode hh1kbw02x -n 三叉戟 -o yaml Kubelet 日志:
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:
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
api版本:storage.k8s.io/v1
种类:CSINode
元数据:
创建时间戳:2020-09-10T07:58:40Z
名称:hh1kbw02x
业主参考:
种类:节点
名称:hh1kbw02x
用户名:d3db28d6-e2be-4ad4-8534-c853b2e025b5
资源版本:“30914526”
自链接:/apis/storage.k8s.io/v1/csinodes/hh1kbw02x
用户名:a764977a-be67-4ee9-8b7e-9aac304e0890
规格:
司机:空
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")
```
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
默认的三叉戟供应商将在默认位置查找,并“嵌入”插件,可以这么说。
所以你需要检查两件事:
ps aux | grep kubelet | grep -e 'root-dir
-> 获取配置的文件夹(在我的例子中是 /container)apiVersion: trident.netapp.io/v1
kind: TridentProvisioner
metadata:
name: trident
namespace: trident
spec:
debug: true
kubeletDir: /container
祝你好运。我要关闭这个了。
当trident-csi
daemonset pod 无法与trident-controller
通信时,观察到类似的情况。 在这种情况下,这是由于网络策略阻止了它。
最有用的评论
所以我修好了,如果我可以这么说的话。 在阅读了外部存储配置器的工作原理并了解了使用 sidecar 容器注册驱动程序的概念后,我回顾了我们的设置。
这非常具有误导性,因为我们将 kubelet 配置为从位于 /var/lib/kubelet 下的配置文件开始,这是默认的根目录。
几个月前,我们决定拆分大脑,将 pod 和容器移动到单独的存储位置,因此我们将管理与操作分开
因此我们将配置文件中的 root-dir 改为指向 /containers 而不是 /var/lib/kubelet
默认的三叉戟供应商将在默认位置查找,并“嵌入”插件,可以这么说。
所以你需要检查两件事:
ps aux | grep kubelet | grep -e 'root-dir
-> 获取配置的文件夹(在我的例子中是 /container)apiVersion: trident.netapp.io/v1 kind: TridentProvisioner metadata: name: trident namespace: trident spec: debug: true kubeletDir: /container
祝你好运。我要关闭这个了。