MongoDB工具 >MongoDB Kubernetes运营商 >参考 > MongoDB数据库资源规范
Cloud Manager和Ops Manager 4.0.11支持MongoDB资源
您可以使用Kubernetes Operator通过Ops Manager 4.0.11或更高版本以及Cloud Manager部署MongoDB资源。在本指南中任何提到Ops Manager的地方,都可以替代 Cloud Manager。
在MongoDB的企业Kubernetes操作员 创建Kubernetes StatefulSets从规范文件,你写的。
MongoDB资源在Kubernetes中创建为 自定义资源。创建或更新MongoDB Kubernetes资源规范后,您将指示MongoDB Enterprise Kubernetes Operator将此规范应用于您的Kubernetes环境。Kubernetes Operator创建定义的StatefulSets,服务和其他Kubernetes资源。操作员完成创建这些对象后,将更新Ops Manager部署配置以反映更改。
部署类型 | 有状态集 | StatefulSet的大小 |
---|---|---|
单机版 | 1个 | 1个吊舱 |
副本集 | 1个 | 每个成员1个吊舱 |
分片集群 | <numberOfShards> + 2 | 每个,shard或config服务器成员1个podmongos |
每个MongoDB Kubernetes资源都使用YAML中的对象规范来定义MongoDB对象的特征和设置:独立, 副本集和分片集群。
每种资源类型都必须使用以下设置:
apiVersion
¶类型:字符串
MongoDB Kubernetes资源模式的版本。
kind
¶类型:字符串
要创建的MongoDB Kubernetes资源类型。设置为MongoDB
metadata.
name
¶类型:字符串
您正在创建的MongoDB Kubernetes资源的名称。
资源名称不得超过44个字符。
spec.
credentials
¶类型:字符串
需要。您创建的作为Ops Manager API身份验证凭据的Kubernetes 机密的名称,供Kubernetes操作员与Cloud Manager或Ops Manager进行通信。
值必须使用名称空间和Secret的名称
该值必须与您在其中创建密钥的名称空间以及name
为Ops Manager
Kubernetes Secret提供的值相匹配。
如果此对象位于与Secret 不同的名称空间中,则应
使用以下格式将此值设置为Secret的名称空间和名称:
<namespace>/<name>
操作员管理对机密的更改
Kubernetes操作员跟踪对Secret的任何更改,并协调MongoDB Kubernetes资源的状态。
spec.
persistent
¶类型:布尔值
默认值:True
spec.
type
¶类型:字符串
要创建的MongoDB Kubernetes资源的类型。可接受的值为:
Standalone
ReplicaSet
ShardedCluster
spec.
version
¶类型:数字
此MongoDB Kubernetes资源上安装的MongoDB版本。
注意
如果将此值更新为更高版本,请考虑进行设置
spec.featureCompatibilityVersion
,以便在必要时选择降级。
每个资源都必须使用一个以下设置:
spec.opsManager.configMapRef.
name
¶类型:字符串
具有Cloud Manager或Ops Manager连接配置的ConfigMap的名称。该spec.cloudManager.configMapRef.name
设置是此设置的别名,可以代替它使用。
值必须与名称空间和ConfigMap的名称匹配
该值必须与您在其中创建Ops Manager 项目ConfigMap的名称空间匹配。
如果此MongoDB Kubernetes资源与
项目ConfigMap位于不同的名称空间中,则应使用以下格式将此值设置为ConfigMap 的名称空间和名称:
<metadata.namespace>/<metadata.name>
操作员管理对ConfigMap的更改
Kubernetes操作员跟踪对ConfigMap的任何更改,并协调MongoDB Kubernetes资源的状态。
(在版本1.3中更改):
在MongoDB Enterprise Kubernetes Operator的早期版本中,此设置为
spec.project
。有关
以前的设置名称的信息,请参见
v1.2文档。
spec.cloudManager.configMapRef.
name
¶类型:字符串
每种资源类型都可以使用以下设置:
spec.
featureCompatibilityVersion
¶类型:数字
限制对升级到新的主要版本时发生的数据更改。这使您可以降级到以前的主要版本。要了解有关功能兼容性的更多信息,请参阅
setFeatureCompatibilityVersion
《 MongoDB手册》。
spec.
clusterDomain
¶类型:字符串
默认值:cluster.local
您在其中部署操作员的Kubernetes集群的域名。当Kubernetes创建一个StatefulSet时,Kubernetes为每个Pod分配一个 FQDN。为了更新Cloud Manager或Ops Manager,Kubernetes Operator 使用提供的集群名称为每个Pod计算FQDN。Kubernetes不提供查询这些主机名的API。
警告
您必须设置spec.clusterDomain
Kubernetes群集是否具有
除default以外的默认域cluster.local
。如果您既不使用默认值也不设置spec.clusterDomain
选项,则Kubernetes Operator可能无法按预期运行。
spec.
clusterName
¶类型:字符串
默认值:cluster.local
spec.clusterName
已弃用
使用spec.clusterDomain
代替。
您在其中部署操作员的Kubernetes集群的域名。当Kubernetes创建一个StatefulSet时,Kubernetes为每个Pod分配一个 FQDN。为了更新Cloud Manager或Ops Manager,Kubernetes Operator 使用提供的集群名称为每个Pod计算FQDN。Kubernetes不提供查询这些主机名的API。
警告
您必须设置spec.clusterDomain
Kubernetes群集是否具有
除default以外的默认域cluster.local
。如果您既不使用默认值也不设置spec.clusterDomain
选项,则Kubernetes Operator可能无法按预期运行。
spec.
service
¶类型:字符串
默认值:<资源名称> +”-svc”和<资源名称> +”-svc-external”
要为StatefulSet创建或使用的Kubernetes服务的名称 。如果具有该名称的服务已经存在,则MongoDB Enterprise Kubernetes Operator不会删除或重新创建它。此设置使用户可以创建其自定义服务,并允许操作员重复使用它们。
您可以并且必须在MongoDB Kubernetes资源规范中使用的其他设置取决于您要创建的MongoDB部署项目:
spec.
exposedExternally
¶类型:布尔值
默认值:false
确定MongoDB部署是否在Kubernetes集群之外公开。这导致Kubernetes创建 NodePort服务。
spec.podSpec.
cpu
¶类型:字符串
Kubernetes 节点上必须具有的最大CPU容量,才能 承载此独立数据库MongoDB Kubernetes资源。
此值映射到 已创建的容器的CPU 的 限制字段。
spec.podSpec.
cpuRequests
¶类型:字符串
正在创建的用于承载此独立数据库MongoDB Kubernetes资源的节点的最小CPU容量。如果省略,则将该值设置为
spec.podSpec.cpu
。
该值映射到 所创建的容器的CPU 的 请求字段。
请求的值必须小于或等于spec.podSpec.cpu
。
spec.podSpec.
memory
¶类型:字符串
Kubernetes 节点上必须有最大内存容量,才能在Kubernetes 上托管此MongoDB Kubernetes资源。该值表示为整数,后跟JEDEC表示法的存储单位 。
例
如果此MongoDB Kubernetes资源需要4 GB的内存,请将此值设置为4G
。
该值映射到 用于创建的容器的内存的 限制字段。
重要
如果您尚未设置spec.podSpec.memory
或
spec.podSpec.memoryRequests
:
spec.podSpec.
memoryRequests
¶类型:字符串
创建的用于承载此独立数据库MongoDB Kubernetes资源的节点的最小内存容量。如果省略,则将该值设置为
spec.podSpec.memory
。
此值映射到 用于创建的容器的内存的 请求字段。
请求的值必须小于或等于spec.podSpec.memory
。
spec.podSpec.persistence.
single
¶类型:集合
让Kubernetes Operator创建一个永久卷声明并将所有三个目录装入数据,日志和日志到同一永久卷。
注意
spec.persistent
: true
persistence.multiple
集合,但不能同时设置两者。标量 | 数据类型 | 描述 |
---|---|---|
labelSelector |
串 | 用于将安装的卷绑定到目录的标签。 |
storage |
串 | 应该安装的永久卷的最小大小。此值表示为整数,后跟JEDEC表示法的存储单位 。 默认值为16G。 例 如果此MongoDB Kubernetes资源需要60 GB的存储空间,请将此值设置为 |
storageClass |
串 | 持续量声明中指定的存储类型。您可以在此对象规范中使用它之前,将该存储类型创建为StorageClass对象 。 注意 确保将StorageClass 设置 |
spec.podSpec.persistence.multiple.
data
¶类型:集合
让Kubernetes Operator创建一个持久卷声明并将数据目录安装到其自己的持久卷上。
注意
spec.persistent
: true
persistence.single
集合,但不能同时设置两者。标量 | 数据类型 | 描述 |
---|---|---|
labelSelector |
串 | 用于将安装的卷绑定到目录的标签。 |
storage |
串 | Kubernetes 节点上必须有最小存储容量,才能在Kubernetes 上托管此独立部署。此值表示为整数,后跟JEDEC表示法的存储单位 。 默认值为16G。 例 如果此MongoDB Kubernetes资源需要60 GB的存储空间,请将此值设置为 |
storageClass |
串 | 此独立部署所需的存储类型。您可以在此对象规范中使用它之前,将该存储类型创建为StorageClass对象 。 注意 确保将StorageClass 设置 |
spec.podSpec.persistence.multiple.
journal
¶类型:集合
让Kubernetes Operator创建一个持久卷声明并将一个日志目录安装到其自己的持久卷上。
注意
spec.persistent
: true
persistence.single
集合,但不能同时设置两者。标量 | 数据类型 | 描述 |
---|---|---|
labelSelector |
串 | 用于将安装的卷绑定到目录的标签。 |
storage |
串 | Kubernetes 节点上必须有最小存储容量,才能在Kubernetes 上托管此独立部署。此值表示为整数,后跟JEDEC表示法的存储单位 。 默认值为1G。 例 如果此MongoDB Kubernetes资源需要60 GB的存储空间,请将此值设置为 |
storageClass |
串 | 此独立部署所需的存储类型。您可以在此对象规范中使用它之前,将该存储类型创建为StorageClass对象 。 注意 确保将StorageClass 设置 |
spec.podSpec.persistence.multiple.
logs
¶类型:集合
让Kubernetes Operator创建一个持久卷声明并将日志目录安装到其自己的持久卷上。
注意
spec.persistent
: true
persistence.single
集合,但不能同时设置两者。标量 | 数据类型 | 描述 |
---|---|---|
labelSelector |
串 | 用于将安装的卷绑定到目录的标签。 |
storage |
串 | Kubernetes 节点上必须有最小存储容量,才能在Kubernetes 上托管此独立部署。此值表示为整数,后跟JEDEC表示法的存储单位 。 默认值为3G。 例 如果此MongoDB Kubernetes资源需要60 GB的存储空间,请将此值设置为 |
storageClass |
串 | 此独立部署所需的存储类型。您可以在此对象规范中使用它之前,将该存储类型创建为StorageClass对象 。 注意 确保将StorageClass 设置 |
spec.podSpec.
podAffinity
¶类型:结构
Kubernetes 规则,以确定是否多个MongoDB的Kubernetes资源荚必须位于同一地点与其他吊舱。
也可以看看
Kubernetes文档中有关亲和力和反亲和力的用例
spec.podSpec.
podTemplate
¶类型:集合
MongoDB Enterprise Kubernetes Operator为MongoDB数据库资源创建的Kubernetes容器的模板。
模板值优先于中指定的值spec.podSpec
。
注意
Kubernetes Operator不会验证您在中提供的字段spec.podSpec.podTemplate
。
spec.podSpec.podTemplate.
metadata
¶类型:集合
MongoDB Enterprise Kubernetes Operator为MongoDB数据库资源创建的Kubernetes容器的元数据。
要查看您可以添加到哪些字段spec.podSpec.podTemplate.metadata
,请参阅Kubernetes文档。
spec.podSpec.podTemplate.
spec
¶类型:集合
MongoDB Enterprise Kubernetes Operator为MongoDB数据库资源创建的Kubernetes容器的规范。
要查看您可以添加到哪些字段spec.podSpec.podTemplate.spec
,请参阅
Kubernetes文档。
注意
将容器添加到时spec.podSpec.podTemplate.spec.containers
,Kubernetes操作员会将它们添加到Kubernetes窗格中。这些容器将附加到Pod中的MongoDB数据库资源容器中。
注意
所有独立设置也适用于副本集资源。
以下设置仅适用于副本集资源类型:
spec.
members
¶类型:整数
必填项。副本集的成员数。
spec.podSpec.
podAntiAffinityTopologyKey
¶类型:字符串
默认值:kubernetes.io/hostname
设置一个规则来传播的MongoDB Kubernetes资源荚 到不同的位置。位置可以是单个节点,机架或区域。该键定义哪个节点 标签 用于确定 节点的相等位置。默认情况下,Kubernetes Operator尝试将Pod分布在不同主机上。
spec.connectivity.
replicaSetHorizons
¶类型:集合
允许您为客户端应用程序和MongoDB代理提供不同的DNS设置。Kubernetes Operator将水平分割DNS用于副本集成员。该功能允许在Kubernetes集群内部和外部Kubernetes进行通信。
您可以为每个主机添加多个外部映射。
水平分割要求
spec.members
。spec.security.tls.enabled
以true
启用TLS。这种使用水平分割的方法需要TLS协议的服务器名称指示扩展。例
在此示例中,副本集成员在example-localhost
地平线之间相互通信。客户端使用example-website
范围与副本集进行通信。
以下设置仅适用于分片群集资源类型:
spec.
exposedExternally
¶类型:布尔值
默认值:false
确定MongoDB部署是否在Kubernetes集群之外公开。这导致Kubernetes创建 NodePort服务。
spec.
configServerCount
¶类型:整数
必填项。配置服务器中的成员数。
spec.configSrvPodSpec.
cpu
¶类型:数字