【问题标题】:How can I safely change resturl for glusterfs storage class on my Kubernetes cluster?如何安全地更改 Kubernetes 集群上 glusterfs 存储类的 resturl?
【发布时间】:2019-05-08 07:48:05
【问题描述】:

Heketi pod 在我们的 Kubernetes 集群上重新启动,现在我正在努力解决如何使用新的 heketi 端点更改 glusterfs 存储类 resturl。
在我们的 PVC 上没有任何数据丢失的最安全的选择是什么? 我能够在我们的测试环境中重新创建 Kubernetes Cluster v1.11.10 并开始对其进行调查。当我尝试编辑存储类时,我得到:

"StorageClass.storage.k8s.io "glusterfs" is invalid: parameters Forbidden: updates to parameters are forbidden."

我们正在使用 Kubernetes v.1.11.10。
我尝试使用正确的 heketi 端点创建新的存储类,但我无法编辑 PVC:

PersistentVolumeClaim "test-pvc" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims 

我只能删除旧的存储类并使用正确的 heketi resturl 创建新的。

【问题讨论】:

  • 您是否使用过 pod IP 或服务名称作为端点?你能“kubectl 描述”你的存储类吗?
  • @VasilyAngapov 不幸的是,存储类是使用 pod IP 而不是服务创建的。 Name: gluster-sc IsDefaultClass: No Annotations: <none> Provisioner: kubernetes.io/glusterfs Parameters: resturl=http://10.244.3.13:8080,restuser=,restuserkey= AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none>

标签: kubernetes glusterfs kubernetes-pvc


【解决方案1】:

您可以尝试像这样使用“kubectl replace”:

kubectl replace -f storage-class.yaml --force 

只需确保使用 Heketi 服务名称作为 REST URL 即可避免进一步的此类问题。

【讨论】:

  • 感谢您的帮助。我发现了为什么 resturl 是用 IP 硬编码的。当我尝试使用服务名称而不是 IP 时,我遇到了 DNS 解析错误,例如:failed to create volume: failed to create volume: Post http://heketi.default:8080/volumes: dial tcp: lookup heketi on 192.168.22.245:53: no such host。但是在调试 pod 中,我没有名称解析这样的问题。 /home # curl http://heketi:8080/volumes ... {"volumes":["04ee4d465cee3979bd52a57049d6"}
【解决方案2】:

我在这里找到了答案,为什么它不能使用内部 DNS heketi 服务名称 Set up Heketi Rest URL in Storage Class issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多