Kubernetes / Rancher 2,带有本地存储卷部署的 mongo-replicaset

Posted

技术标签:

【中文标题】Kubernetes / Rancher 2,带有本地存储卷部署的 mongo-replicaset【英文标题】:Kubernetes / Rancher 2, mongo-replicaset with Local Storage Volume deployment 【发布时间】:2019-03-31 05:16:50 【问题描述】:

我尝试,我尝试,但 Rancher 2.1 无法部署配置了本地持久卷的“mongo-replicaset”目录应用程序。

如何正确部署具有本地存储卷的 mongo-replicaset?由于我是 rancher 2 的新手,因此任何调试技术都值得赞赏。

我遵循下面的 4 个 ABCD 步骤,但第一个 pod 部署永远不会结束。它有什么问题?日志和结果屏幕在最后。详细配置见here。

注意:没有本地持久卷的部署成功

注意:使用本地持久卷和“mongo”映像进行部署成功(无副本集版本)。

注意:同时使用 mongo-replicaset 和本地持久卷进行部署失败


步骤 A - 集群

创建一个牧场主实例,然后:

    添加三个节点:一个worker、一个worker etcd、一个worker control plane 在每个节点上添加标签:节点 Affinity 的名称一、名称二和名称三

步骤 B - 存储类

使用这些参数创建一个存储类:

    volumeBindingMode:WaitForFirstConsumer saw here 名称:本地存储

步骤 C - 持久卷

像这样添加 3 个持久卷:

    类型:本地节点路径 访问模式:单节点 RW,12Gi 存储类:本地存储 节点亲和性:名称一(二为第二卷,三为第三卷)

步骤 D - Mongo 副本部署

从目录中,选择 Mongo-replicaset 并像这样配置它:

    副本集名称:rs0 persistentVolume.enabled: true persistentVolume.size: 12Gi persistentVolume.storageClass: 本地存储

结果

执行 ABCD 步骤后,新创建的 mongo-replicaset 应用程序无限保持在“Initializing”状态。

关联的 mongo 工作负载仅包含一个 Pod,而不是三个。这个 pod 有两个“崩溃”的容器,bootstrap 和 mongo-replicaset。


日志

这是唯一运行的 pod 的 4 个容器的输出。没有错误,没有问题。

我无法弄清楚这个配置有什么问题,而且我没有任何工具或技术来分析问题。详细配置可见here。请向我询问更多命令结果。

谢谢你

【问题讨论】:

kubectl describe rs mongo-replicaset 说什么? 来自服务器的错误(未找到):replicasets.extensions “mongo-replicaset”未找到。我尝试使用 mongodb-replicaset(工作负载的名称?),但它是一样的。 【参考方案1】:

所有这些配置都是正确的。

由于 Rancher 是 Kubernetes 的容器化部署,因此缺少一个细节。 Kubelet 部署在 docker 容器中的每个节点上。他们无法访问操作系统本地文件夹。

需要为 kubelet 添加卷绑定,这样 K8s 将能够使用相同的绑定创建 mongo pod。

在牧场主: 编辑集群 yaml(集群 > 编辑 > 编辑为 Yaml)

在“服务”节点下添加以下条目:

  kubelet: 
    extra_binds: 
      - "/mongo:/mongo:rshared"

【讨论】:

以上是关于Kubernetes / Rancher 2,带有本地存储卷部署的 mongo-replicaset的主要内容,如果未能解决你的问题,请参考以下文章

Rancher 2.3实现K8S一键式升级!再也不用同步升级Rancher啦!

在阿里云搭建Rancher2.0和Kubernetes集群

Rancher 2.2.2 - HA 部署高可用k8s集群

如何将 kubectl 命令用于在 Rancher 中使用 docker 运行的 kubernetes?

如何从Rancher 1.6迁移到Rancher 2.0?这份清单可以帮助你!

详解K8S与Rancher 2.0内的身份认证与授权