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

标签 mongodb kubernetes rancher persistent-volumes kubernetes-pod

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

如何使用 Local Storage Volume 正确部署 mongo-replicaset?由于我是 rancher 2 的新手,任何调试技术都值得赞赏。

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

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

注意:使用本地持久卷和“mongo”镜像部署成功(没有副本集版本)。

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


步骤 A - 集群

创建一个 Rancher 实例,并且:

  1. 添加三个节点:一个worker,一个worker etcd,一个worker control plane
  2. 在每个节点上添加一个标签:name one,name 2 和 name three 用于节点 Affinity

步骤 B - 存储类

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

  1. volumeBindingMode : WaitForFirstConsumer saw here
  2. 名称:本地存储

步骤 C - 持久卷

像这样添加 3 个持久卷:

  1. 类型:本地节点路径
  2. 接入方式:单节点读写,12Gi
  3. 存储类:本地存储
  4. 节点亲和度:命名一个(第二卷二,第三卷三)

步骤 D - Mongo-replicaset 部署

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

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

结果

在执行完 ABCD 步骤后,新创建的 mongo-replicaset 应用程序将无限停留在“正在初始化”状态。

mongo status stopped at initialized

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

crashed workload with only one pod


日志

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

no logs in mongo container allmost no logs in copy-config container allmost no logs in install container some logs from bootstrap container

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

谢谢

最佳答案

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

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

需要为 kubelet 添加卷绑定(bind),这样 K8s 就可以使用相同的绑定(bind)创建 mongo pod。

在 Rancher 中: 编辑集群 yaml(Cluster > Edit > Edit as Yaml)

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

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

关于mongodb - Kubernetes/Rancher 2,带有本地存储卷部署的 mongo-replicaset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53008824/

相关文章:

java - spring boot mongodb连接错误

docker - 在 Rancher 中使用 cert-manager 获取自签名证书

kubernetes - 命名空间 “stuck” 作为终止

kubernetes - AKS |网络政策|使用Azure CNI时阻止入口流量

namespaces - Rancher - 是否可以在新环境中启动/重新创建一个环境中可用的整个命名空间

ios - 如何将 iOS Swift 应用程序指向 Amazon Web Services 上的 Parse Server?

node.js - Monk可以直接返回json数据而不是promise吗?

MongoDB 聚合使用 $match 和 $expr 以及数组

kubernetes - Nginx 入口失败 : HTTP probe failed with statuscode: 503

kubernetes - 根据每个 Pod 的事件连接数扩展 GKE Pod