注意
本教程假定您具备一定的Kubernetes知识。如果您不熟悉Kubernetes,请在开始之前查看有关Kubernetes对象和自定义资源的Kubernetes文档。 Kubernetes Operator 将Ops Manager和MongoDB部署表示为自定义资源。您可以使用 kubectl 创建和管理它们,就像管理任何其他Kubernetes对象一样。要学习;了解这些自定义资源如何相互关联,请参阅Kubernetes Operator 架构的MongoDB控制器概述。
先决条件
在安装 Kubernetes 操作符之前,请完成以下先决条件:
准备一个可用的 Kubernetes 解决方案,并验证硬件架构支持。
如果您需要Kubernetes解决方案,请参阅有关选择正确解决方案的Kubernetes文档。查看支持的硬件架构。
克隆MongoDB Controllers for Kubernetes Operator存储库,并查看当前发布的标签。
git clone https://github.com/mongodb/mongodb-kubernetes.git cd mongodb-kubernetes git checkout 1.10.0
注意
您可以使用 Helm 安装Kubernetes Operator。要学习;了解如何安装 Helm,请参阅Github上的文档。
为Kubernetes部署创建命名空间。
默认下, Kubernetes Operator 使用 mongodb命名空间。为了简化安装,请考虑使用以下kubectl命令创建一个标记为 mongodb 的命名空间:
kubectl create namespace mongodb
如果您不想使用mongodb命名空间,则可以为命名空间添加任何您喜欢的标签:
kubectl create namespace <namespaceName>
可选:运行MongoDB Ops ManagerMongoDB Ops Manager 。
如果不使用 Kubernetes Operator 部署 Ops Manager 资源,则必须在 Kubernetes 集群外部运行 Ops Manager。 如果要使用 Kubernetes 操作符 在 Kubernetes 中部署 Ops Manager 资源,请跳过此先决条件。
重要
您的 Ops Manager 安装必须运行活动的NTP服务。 如果 Ops Manager 主机的时钟不同步,则该主机将无法与 Kubernetes 操作符 通信。
要学习;了解如何检查MongoDB Ops Manager托管的 NTP 服务,请参阅 RHEL 文档。
Considerations
查看以下规划主题。要了解更多信息,请参阅 规划 Kubernetes 操作符 安装。
决定是安装在单个 Kubernetes 集群还是多个 Kubernetes 集群上。请参阅 选择单集群或多集群安装模式。
Confirm that your versions of Kubernetes, OpenShift, MongoDB, and Ops Manager are compatible. See MongoDB Controllers for Kubernetes Operator Compatibility.
设置 Kubernetes 操作符 部署的范围,这将决定 Kubernetes 操作符 监视的命名空间。请参阅 为 Kubernetes 操作符 部署设置 MongoDB 控制器范围。
应用存储、持久性以及 CPU 和内存界限的生产建议。See 最佳实践.
使用 Kubernetes 安装
安装过程因您想要配置环境的方式而异:
注意
自始至终使用相同的命名空间
默认情况下,Kubernetes Operator 会将 Kubernetes 集群中的所有资源部署到 命名空间 mongodb 中。您可以通过编辑 mongodb-kubernetes.yaml 中的所有 metadata.namespace 值,将 Kubernetes Operator 资源部署到不同的命名空间。您还必须更新同一文件中的每个 RoleBinding 和 ClusterRoleBinding 中的 subjects[0].namespace 值。如果省略此值,绑定将在默认的 mongodb 命名空间中查找 ServiceAccount,但无法找到它:
apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-operator namespace: production apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: mongodb-kubernetes-operator namespace: production roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operator subjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-kubernetes-operator namespace: production # Example truncated ...
可选:在安装Kubernetes Operator YAML 之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview. To learn more, see Preview Features.
使用适用于Kubernetes的MongoDB Helm Charts。
注意
Helm Chart 存储库弃用
从MongoDB Helm Charts for Kubernetes存储库安装Kubernetes Operator 的功能已弃用,并将在 MCK 版本 2.0 中删除。要从符合 OCI 的注册表安装 Helm 图表 ,请参阅“使用 Helm(符合 OCI 的注册表)”标签页。
为 Kubernetes添加MongoDB Helm Charts。
您可以通过运行以下命令在本地添加Kubernetes Operator Helm Chart:
helm repo add mongodb https://mongodb.github.io/helm-charts
在部署 Helm Chart 之前对其进行自定义。
要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
部署Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade --install mongodb-kubernetes-operator mongodb/mongodb-kubernetes
您可以传递--namespace和--create-namespace标志,将Kubernetes Operator部署到非默认命名空间,如下所示:
helm upgrade --install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --namespace mongodb \ --create-namespace
使用 Helm 安装特定的每日构建版本
MongoDB 每天都会重建 Kubernetes 操作符映像,以集成最新的安全和操作系统更新。
默认情况下, helm安装您指定的 Kubernetes 操作符版本的最新版本。
要安装较早的版本,请使用--set build=<build-id>将版本 ID 指定为参数。 版本 ID 的格式始终为-b<YYYYMMDD>T000000Z ,其中<YYYYMMDD>是要使用的版本的创建日期。
例子
此示例展示了如何使用最新映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes
此示例展示了如何使用 2021 年 2 月 5 日午夜创建的映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set build=-b20210205T000000Z
注意
MongoDB 建议使用默认(最新)版本。
MongoDB 还将 Kubernetes 操作符 Helm 图表发布到 quay.io/mongodb/helm-charts 的 OCI 兼容容器存储库中。从该存储库安装时,您可以直接引用图表,而无需添加 Helm 图表存储库。
在部署 Helm 图表之前对其进行自定义。
要学习;了解可选的 Kubernetes Operator 安装设置,请参阅Operator Helm 安装设置。
部署Kubernetes Operator。
运行以下helm命令,将Kubernetes Operator部署到Kubernetes集群中的默认命名空间:
helm upgrade --install mongodb-kubernetes-operator \ oci://quay.io/mongodb/helm-charts/mongodb-kubernetes
要将 Kubernetes Operator 部署到非默认命名空间,请传递 --namespace 和 --create-namespace 标志:
helm upgrade --install mongodb-kubernetes-operator \ oci://quay.io/mongodb/helm-charts/mongodb-kubernetes \ --namespace mongodb \ --create-namespace
使用 OpenShift 安装
开始之前,请确保在将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: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-operator namespace: production apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: mongodb-kubernetes-operator namespace: production roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mongodb-kubernetes-operator subjects: - kind: ServiceAccount name: mongodb-kubernetes-operator namespace: production apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-kubernetes-operator namespace: production # Example truncated ...
克隆MongoDB Controllers for Kubernetes Operator存储库,并查看当前发布的标签。
调用以下 git 命令:
git clone https://github.com/mongodb/mongodb-kubernetes.git cd mongodb-kubernetes git checkout 1.10.0
导航到您在其中克隆MongoDB Controllers for Kubernetes Operator存储库的目录。
例如,如果您将存储库克隆到主目录中,请运行:
cd ~/mongodb-kubernetes
为MongoDB部署安装 CustomResourceDefinitions。
调用以下oc命令:
oc apply -f crds.yaml
可选:在安装Kubernetes Operator YAML 之前对其进行自定义。
要了解可选的 Kubernetes Operator 安装设置,请参阅Operator kubectl 和 oc 安装设置。
注意
To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview. To learn more, see Preview Features.
在安装之前,将 <openshift-pull-secret> 添加到 Kubernetes 操作符 YAML 中的 ServiceAccount 定义中。
apiVersion: v1 kind: ServiceAccount metadata: name: enterprise-operator namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-appdb namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-kubernetes-database-pods namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret>
要了解更多信息,请参阅Helm 安装设置中的registry.imagePullSecrets设置。
使用适用于Kubernetes的MongoDB Helm Charts。
注意
Helm Chart 存储库弃用
从MongoDB Helm Charts for Kubernetes存储库安装Kubernetes Operator 的功能已弃用,并将在 MCK 版本 2.0 中删除。改为从位于 quay.io/mongodb/helm-charts 的符合 OCI 的注册表安装 Helm 图表 。
您可以使用Helm 3安装Kubernetes Operator。
将MongoDB Helm Charts for Kubernetes存储库添加到 Helm。
helm repo add mongodb https://mongodb.github.io/helm-charts
使用 helm 安装Kubernetes 操作符。
安装适用于Kubernetes的MongoDB Helm Charts:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --values https://raw.githubusercontent.com/mongodb/helm-charts/main/charts/mongodb-kubernetes/values-openshift.yaml
使用values-openshift.yaml设置。要学习;了解可选的Kubernetes Operator 安装设置,请参阅 Operator Helm 安装设置。
注意
To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview. To learn more, see Preview Features.
使用 Helm 安装特定的每日构建版本
MongoDB 每天都会重建 Kubernetes 操作符映像,以集成最新的安全和操作系统更新。
默认情况下, helm安装您指定的 Kubernetes 操作符版本的最新版本。
要安装较早的版本,请使用--set build=<build-id>将版本 ID 指定为参数。 版本 ID 的格式始终为-b<YYYYMMDD>T000000Z ,其中<YYYYMMDD>是要使用的版本的创建日期。
例子
此示例展示了如何使用最新映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes
此示例展示了如何使用 2021 年 2 月 5 日午夜创建的映像安装 Kubernetes 操作符:
helm install mongodb-kubernetes-operator mongodb/mongodb-kubernetes \ --set build=-b20210205T000000Z
注意
MongoDB 建议使用默认(最新)版本。
验证安装
要验证 Kubernetes 操作符是否正确安装,请运行以下命令并验证输出:
kubectl describe deployments mongodb-kubernetes-operator -n <metadata.namespace>
oc 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 后,您可以: