对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

为Kubernetes Operator 安装MongoDB控制器

注意

本教程假定读者对 Kubernetes 有一定了解。如果您不熟悉 Kubernetes,请在开始之前查看有关 Kubernetes 对象 和 自定义资源的 Kubernetes 文档。Kubernetes Operator 将 MongoDB Ops Manager 和 MongoDB 部署表示为自定义资源。您可以使用 kubectl 创建和管理它们,方式与管理任何其他 Kubernetes 对象的方式相同。要了解这些自定义资源之间的关系,请参阅 MongoDB Controllers for Kubernetes Operator 架构概述。

在安装 Kubernetes 操作符之前,请完成以下先决条件:

1

如果您需要Kubernetes解决方案,请参阅有关选择正确解决方案的Kubernetes文档。查看支持的硬件架构。

2
git clone https://github.com/mongodb/mongodb-kubernetes.gitcd mongodb-kubernetesgit checkout 1.15.0

注意

您可以使用 Helm 安装Kubernetes Operator。要学习;了解如何安装 Helm,请参阅Github上的文档。

3

默认下, Kubernetes Operator 使用 mongodb命名空间。为了简化安装,请考虑使用以下kubectl命令创建一个标记为 mongodb 的命名空间:

kubectl create namespace mongodb

如果您不想使用mongodb命名空间,则可以为命名空间添加任何您喜欢的标签:

kubectl create namespace <namespaceName>
4

如果不使用 Kubernetes Operator 部署 Ops Manager 资源,则必须在 Kubernetes 集群外部运行 Ops Manager。 如果要使用 Kubernetes 操作符 在 Kubernetes 中部署 Ops Manager 资源,请跳过此先决条件。

重要

您的 Ops Manager 安装必须运行活动的NTP服务。 如果 Ops Manager 主机的时钟不同步,则该主机将无法与 Kubernetes 操作符 通信。

要学习;了解如何检查MongoDB Ops Manager托管的 NTP 服务,请参阅 RHEL 文档。

查看以下规划主题。要了解更多信息,请参阅 规划 Kubernetes 操作符 安装。

安装过程因您想要配置环境的方式而异:

注意

自始至终使用相同的命名空间

默认情况下,Kubernetes Operator 会将 Kubernetes 集群中的所有资源部署到 命名空间 mongodb 中。您可以通过编辑 mongodb-kubernetes.yaml 中的所有 metadata.namespace 值,将 Kubernetes Operator 资源部署到不同的命名空间。您还必须更新同一文件中的每个 RoleBinding 和 ClusterRoleBinding 中的 subjects[0].namespace 值。如果省略此值,绑定将在默认的 mongodb 命名空间中查找 ServiceAccount,但无法找到它:

---apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-operator namespace: production ---apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: mongodb-kubernetes-operator namespace: productionroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production ---apiVersion: apps/v1kind: Deploymentmetadata: name: mongodb-kubernetes-operator namespace: production ---# Example truncated---...
1

要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。

注意

要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。

2

运行以下 kubectl 命令,将所选的 CRD 版本部署到 Kubernetes 集群:

kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/1.15.0/public/crds.yaml
3

运行以下 kubectl 命令,将所选版本的 Kubernetes 操作符 部署到 Kubernetes 集群:

kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-kubernetes/1.15.0/public/mongodb-kubernetes.yaml

开始之前,请确保在将Kubernetes Operator部署到OpenShift时将 MANAGED_SECURITY_CONTEXT 标志设立为 true。该值在values-openshift.yaml文件中预定义。

安装过程因您想要配置环境的方式而异:

注意

自始至终使用相同的命名空间

默认情况下,Kubernetes Operator 会将 Kubernetes 集群中的所有资源部署到 命名空间 mongodb 中。您可以通过编辑 mongodb-kubernetes-openshift.yaml 中的所有 metadata.namespace 值,将 Kubernetes Operator 资源部署到不同的命名空间。您还必须更新同一文件中的每个 RoleBinding 和 ClusterRoleBinding 中的 subjects[0].namespace 值。如果省略此值,绑定将在默认的 mongodb 命名空间中查找 ServiceAccount,但无法找到它:

---apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-operator namespace: production ---apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: mongodb-kubernetes-operator namespace: productionroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operatorsubjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production ---apiVersion: apps/v1kind: Deploymentmetadata: name: mongodb-kubernetes-operator namespace: production ---# Example truncated---...
1

调用以下 git 命令:

git clone https://github.com/mongodb/mongodb-kubernetes.gitcd mongodb-kubernetesgit checkout 1.15.0
2

例如,如果您将存储库克隆到主目录中,请运行:

cd ~/mongodb-kubernetes
3

调用以下oc命令:

oc apply -f crds.yaml
4

要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。

注意

要启用静态容器的公共预览版以提高和简化安全性,请参阅静态容器(公共预览版)。当此功能处于公共预览阶段时,我们不建议在生产中使用此功能。要学习;了解更多信息,请参阅预览功能。

5
---apiVersion: v1kind: ServiceAccountmetadata: name: enterprise-operator namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> ---apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-appdb namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> ---apiVersion: v1kind: ServiceAccountmetadata: name: mongodb-kubernetes-database-pods namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret>

要了解更多信息,请参阅Helm 安装设置中的registry.imagePullSecrets设置。

6

调用以下oc命令:

oc apply -f mongodb-kubernetes-openshift.yaml

要验证 Kubernetes 操作符是否正确安装,请运行以下命令并验证输出:

kubectl describe deployments mongodb-kubernetes-operator -n <metadata.namespace>

默认情况下,部署存在于mongodb命名空间中。 如果出现以下错误消息,请确保使用正确的命名空间:

Error from server (NotFound): deployments.apps "mongodb-kubernetes-operator" not found

要对 Kubernetes 操作符进行故障排除,请参阅查看 Kubernetes 操作符的日志和其他故障排除主题。

重要

如果需要删除 Kubernetes 操作符 或命名空间,则必须首先删除 MongoDB 资源。

安装MongoDB Controllers for Kubernetes Operator 后,您可以: