Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator

MongoDB Enterprise Kubernetes Operator 中的已知问题

在此页面上

  • EBS 卷预配不足导致 IOPS 等待时间过长
  • ConfigMap 名称 mongodb-enterprise-operator-member-list已硬编码
  • mongos 禁用身份验证后实例无法进入就绪状态
  • 更新 Google 防火墙规则以修复 Webhook 问题
  • 正确配置持久存储
  • 在删除 Kubernetes 之前删除资源
  • 为 Kubernetes 操作符 和 MongoDB 资源创建单独的命名空间
  • 部署后启用 HTTPS
  • 无法更新应用程序数据库 Pods 上的 MongoDB Agent
  • 无法从 IBM Cloud Paks 中提取 Enterprise Kubernetes Operator 映像
  • 机器内存与container内存

如果您使用了 kops Kubernetes在 中Amazon Web Services 集群,但遇到性能差和 IOPS 等待时间长的情况,则您的弹性块存储 (EBS) 卷可能预配不足。

要提高性能,请增加 EBS 卷的存储与 IOPS 的比率。 例如,如果数据库大小为500 GB,请将 IOPS 增加到1500 ,即每 GB 3 : 1的比率。 要了解有关提高 IOPS 的更多信息,请参阅Amazon Web Services 文档。

当您运行kubectl mongodb插件时,例如在多 Kubernetes 集群快速启动过程中,该插件会创建一个名为mongodb-enterprise-operator-member-list的默认 ConfigMap。此 ConfigMap 包含多 Kubernetes 集群 MongoDB 部署的所有成员。您无法更改 ConfigMap 的名称。要了解有关插件标志和操作的更多信息,请参阅MongoDB 插件参考。

注意

此问题仅适用于满足以下条件的分片集群

  • 使用 Kubernetes 操作符 1.13.0 进行部署

  • 使用 X.509 身份验证

  • 使用 kubernetes.io/tls TLS 证书密钥MongoDB Agent

如果您通过将spec.security.auth.enabled设置为false来禁用身份验证,则mongos Pod 永远不会达到ready状态。

作为一种变通方法,请删除部署中的每个mongos Pod。

运行以下命令列出所有 Pod:

kubectl get pods

对于名称中包含mongos的每个 Pod,使用以下命令将其删除:

kubectl delete pod <podname>

当您删除一个 Pod 时,Kubernetes 会重新创建它。 Kubernetes 重新创建的每个 Pod 都会收到更新的配置,并且可以达到READY状态。 要确认所有mongos Pod 均为READY ,请运行以下命令:

kubectl get pods -n <metadata.namespace>

如下所示的响应表示所有mongos Pod 均为READY

NAME READY STATUS RESTARTS AGE
mongodb-enterprise-operator-6495bdd947-ttwqf 1/1 Running 0 50m
my-sharded-cluster-0-0 1/1 Running 0 12m
my-sharded-cluster-1-0 1/1 Running 0 12m
my-sharded-cluster-config-0 1/1 Running 0 12m
my-sharded-cluster-config-1 1/1 Running 0 12m
my-sharded-cluster-mongos-0 1/1 Running 0 11m
my-sharded-cluster-mongos-1 1/1 Running 0 11m
om-0 1/1 Running 0 42m
om-db-0 2/2 Running 0 44m
om-db-1 2/2 Running 0 43m
om-db-2 2/2 Running 0 43m

当您将 Kubernetes Operator 部署到 GKE (Google Kubernetes Engine) 时 私有集群时,MongoDB 资源或 MongoDBOpsManager 资源创建可能会超时。日志中可能会显示以下消息: Error setting state to reconciling: Timeout: request did not complete within requested timeout 30s

Google 配置防火墙以限制对 Kubernetes Pod 的访问 。要使用 Webhook 服务,请 添加新的防火墙规则 授予 GKE (Google Kubernetes Engine) 控制平面对 Webhook 服务的访问。

Kubernetes 操作符 Webhook 服务在端口 443 上运行。

如果没有 持久卷 在创建资源时可用,生成的 Pod 处于暂时状态,且 Operator 失败(重试20 次后)并显示以下错误:

Failed to update Ops Manager automation config: Some agents failed to register

要防止此错误,请执行以下任一操作:

  • 提供 持久卷

  • 为资源设置persistent : false

仅出于测试目的,您也可以设置persistent : false不得在生产环境中使用此方法,因为在重启之间不会保留数据。

有时,Ops Manager 可能与 Kubernetes 不同。 这主要发生在手动删除 Kubernetes 资源时。 Ops Manager 可以继续显示已关闭的自动化代理。

如果要删除 Kubernetes 上的 MongoDB 部署,请先使用资源规范删除资源,以免留下失效的自动化代理。

要解决可能出现的任何问题,请参阅:

最佳策略是在不同的命名空间中创建 Kubernetes 操作符及其资源,以便以下操作正常运行:

kubectl delete pods --all

或是

kubectl delete namespace mongodb

如果 Kubernetes Operator 和资源位于同一mongodb 命名空间 ,then 操作符也会在同一操作中被删除。这意味着它无法清理配置,而清理配置必须在MongoDB Ops Manager应用程序中完成。

我们建议您在部署 Ops Manager 资源 之前 启用 HTTPS 。但是,如果在部署后启用HTTPS ,托管资源将无法再与 Ops Manager 通信,并且 Kubernetes Operator 会将资源状态报告为Failed

要解决此问题,您必须删除 Pod 为每个 Pod 运行以下命令:

kubectl delete pod <replicaset-pod-name>

删除后,Kubernetes 会自动重启已删除的 Pod。 在此期间,资源无法访问并导致停机。

提示

另请参阅:

您无法使用 Ops Manager 升级在应用程序数据库 Pod 上运行的 MongoDB 助手。在这些 Pod 上运行的 MongoDB 助手版本嵌入在应用程序数据库 Docker 映像中。

当 MongoDB 发布新映像时,您可以使用 Kubernetes Operator 升级应用程序数据库 Pod 上的 MongoDB Agent 版本。

提示

另请参阅:

如果您从 IBM Cloud Paks 中托管的容器注册表中拉取 Kubernetes Operator 映像 ,IBM Cloud Paks 通过在正式映像名称中添加摘要 SHA 来更改映像的名称。此操作会导致 Kubernetes Operator 发出类似于以下内容的错误消息:

Failed to apply default image tag "cp.icr.io/cp/cpd/ibm-cpd-mongodb-agent@
sha256:10.14.24.6505-1": couldn't parse image reference "cp.icr.io/cp/cpd/
ibm-cpd-mongodb-agent@sha256:10.14.24.6505-1": invalid reference format

作为一种变通方法,请更新spec.applicationDatabase.podSpec. podTemplate中的 Ops Manager 应用程序数据库资源定义,为包含摘要 SHA 的 Kubernetes 操作符映像指定新名称,类似于以下示例。

applicationDatabase:
# The version specified must match the one in the image provided in the `mongod` field
version: 4.4.11-ubi8
members: 3
podSpec:
podTemplate:
spec:
containers:
- name: mongodb-agent
image: 'cp.icr.io/cp/cpd/ibm-cpd-mongodb-agent@sha256:689df23cc35a435f5147d9cd8a697474f8451ad67a1e8a8c803d95f12fea0b59'

Cloud Manager 和 Ops Manager 中的自动化代理会报告主机内存 (RAM) 使用情况,而不是 Kubernetes container 内存使用情况。

后退

故障排除