繁体   English   中英

如何将OpenStack卷连接到Kubernetes Staic Pod?

[英]How to attach OpenStack volume to a Kubernetes staic pod?

假设我在OpenStack云中使用kubelet v1.10.3引导了一个主节点,我希望有一个“自托管”的单个etcd节点作为Pod来满足k8s的必要性。

在启动kube-apiserver组件之前,您需要一个有效的etcd实例,但是当然,您不能仅仅执行kubectl apply -f或将清单放到addon-manager文件夹中,因为集群根本没有准备好。 有一种方法可以通过kubelet来启动Pod,而无需准备好apiserver。 它称为静态 /etc/kubernetes/manifests/ (通常位于/etc/kubernetes/manifests/ yaml Pod定义)。 这就是我启动apiserver,schedule,controller-manager和etcd本身的“系统” pod的方式。 以前,我只是从节点挂载目录来持久保存etcd数据,但现在我想使用OpenStack块存储资源。 这里是一个问题:如何附加,安装和使用OpenStack煤渣卷来持久存储来自静态Pod的etcd数据?

据我今天了解,至少有3种方式附加OpenStack卷:

  • CSI OpenStack煤渣驱动程序,这是一种管理卷的新方法。 而且它不符合我的要求,因为在静态Pod清单中,我只能声明Pod,而不能声明其他资源(如PVC / PV),而CSI文档说:

    csi卷类型不支持从Pod直接引用,并且只能通过PersistentVolumeClaim对象在Pod中引用。

  • 在csi之前附加卷的方法是: FlexVolume

    FlexVolume驱动程序二进制文件必须安装在每个节点(有时是主节点)上的预定义卷插件路径中。

好的,我将这些二进制文件添加到我的节点中( 使用此DS作为参考 ),将体积添加到pod清单中,如下所示:

volumes:
- name: test
  flexVolume:
    driver: "cinder.io/cinder-flex-volume-driver"
    fsType: "ext4"
    options:
      volumeID: "$VOLUME_ID"
      cinderConfig: "/etc/kubernetes/cloud-config"

并从kubelet日志中获得以下错误:

driver-call.go:258]安装命令失败,状态:失败,原因:卷2c21311b-7329-4cf4-8230-f3ce2f23cf1a不可用

这很奇怪,因为我确定此Cinder卷已附加到我的CoreOS计算实例中。

  • 我知道的挂载卷的最后一种方法是对cinder树内支持,它至少从k8s 1.5起就应该起作用并且除了--cloud-provider=openstack--cloud-config kubelet选项之外,没有任何特殊要求。

声明静态Pod的音量的yaml清单部分如下所示:

volumes:
  - name: html-volume
    cinder:
      # Enter the volume ID below
      volumeID: "$VOLUME_ID"
      fsType: ext4

不幸的是,当我尝试这种方法时,我从kubelet收到以下错误:

卷尚未添加到节点的卷状态中的VolumesInUse列表中。

不知道这意味着什么,但听起来好像无法更新节点状态(当然,还没有etcd和apiserver)。 遗憾的是,这对我来说是最有前途的选择。

是否有其他方法仅依赖kubelet将OpenStack cinder卷附加到静态Pod(当集群实际上尚未就绪时)? 我错过了什么云的任何想法都遇到了以上错误?

消息Volume has not been added to the list of VolumesInUse in the node's volume status for volume. 说该节点的附加/分离操作仅委托给控制器管理器。 Kubelet等待控制器建立附件,但由于控制器尚未启动,因此卷尚未达到适当的状态。 解决方案是设置kubelet标志--enable-controller-attach-detach=false来让kubelet附加,安装等等。 由于以下原因,此标志默认情况下设置为true

  • 如果节点丢失,则可以通过控制器分离附加到该节点的卷,然后将其重新附加到其他位置。

  • 不需要在每个节点上都提供用于连接和分离的凭据,从而提高了安全性。

在您的情况下,将此标志设置为false是合理的,因为这是实现所需目标的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM