如何在 Kubernetes 上创建 MongoDB 集群?
How create MongoDB cluster on Kubernetes?
我想创建MongoDB三台机器的副本,需要指定这些机器的IP地址吗?但是他们 运行 进入一个 pod 并拥有一个动态 IP。如果您尝试指定 DNS 名称服务 MongoDB 他说
No host described in new configuration XXXXX for replica set
app_replica maps to this node
如何为 c k8s 配置 MongoDB 副本?
我为 k8s 使用 DNS 插件。
我尝试按如下方式初始化集群:
var config = {
"_id" : "app_replica",
"members" : [
{
"_id" : 0,
"host" : "mongodb-node-01"
},
{
"_id" : 1,
"host" : "mongodb-node-02"
},
{
"_id" : 2,
"host" : "mongodb-node-03",
"arbiterOnly" : true
}
]
}
rs.initiate(config)
配置服务:
apiVersion: v1
kind: Service
metadata:
name: "mongodb-node-01"
labels:
app: "mongodb-node-01"
spec:
ports:
- port: 27017
targetPort: 27001
selector:
app: "mongodb-node-01"
配置复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
name: "mongodb-node-01"
labels:
app: "mongodb-node-01"
spec:
replicas: 1
selector:
app: "mongodb-node-01"
template:
metadata:
labels:
app: "mongodb-node-01"
spec:
containers:
- name: "mongodb-node-01"
image: 192.168.0.139:5000/db/mongo
command:
- mongod
- "--replSet"
- "app_replica"
- "--smallfiles"
- "--noprealloc"
env:
- name: ENV
value: "prod"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db
readOnly: false
volumes:
- name: mongo-persistent-storage
hostPath:
path: /data/mongo/mongodb-node-01
nodeSelector:
database: "true"
mongodb01: "true"
您需要设置多个部署和服务。看看这个动物园管理员示例 - https://gist.github.com/bprashanth/8160d0cf1469b4b125af95f697433934
您不依赖 node/machine IP。相反,您依赖于多种服务的稳定 DNS 名称。
看看https://www.mongodb.com/blog/post/running-mongodb-as-a-microservice-with-docker-and-kubernetes,里面有很棒的pdf教程。
我想创建MongoDB三台机器的副本,需要指定这些机器的IP地址吗?但是他们 运行 进入一个 pod 并拥有一个动态 IP。如果您尝试指定 DNS 名称服务 MongoDB 他说
No host described in new configuration XXXXX for replica set app_replica maps to this node
如何为 c k8s 配置 MongoDB 副本?
我为 k8s 使用 DNS 插件。 我尝试按如下方式初始化集群:
var config = {
"_id" : "app_replica",
"members" : [
{
"_id" : 0,
"host" : "mongodb-node-01"
},
{
"_id" : 1,
"host" : "mongodb-node-02"
},
{
"_id" : 2,
"host" : "mongodb-node-03",
"arbiterOnly" : true
}
]
}
rs.initiate(config)
配置服务:
apiVersion: v1
kind: Service
metadata:
name: "mongodb-node-01"
labels:
app: "mongodb-node-01"
spec:
ports:
- port: 27017
targetPort: 27001
selector:
app: "mongodb-node-01"
配置复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
name: "mongodb-node-01"
labels:
app: "mongodb-node-01"
spec:
replicas: 1
selector:
app: "mongodb-node-01"
template:
metadata:
labels:
app: "mongodb-node-01"
spec:
containers:
- name: "mongodb-node-01"
image: 192.168.0.139:5000/db/mongo
command:
- mongod
- "--replSet"
- "app_replica"
- "--smallfiles"
- "--noprealloc"
env:
- name: ENV
value: "prod"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db
readOnly: false
volumes:
- name: mongo-persistent-storage
hostPath:
path: /data/mongo/mongodb-node-01
nodeSelector:
database: "true"
mongodb01: "true"
您需要设置多个部署和服务。看看这个动物园管理员示例 - https://gist.github.com/bprashanth/8160d0cf1469b4b125af95f697433934
您不依赖 node/machine IP。相反,您依赖于多种服务的稳定 DNS 名称。
看看https://www.mongodb.com/blog/post/running-mongodb-as-a-microservice-with-docker-and-kubernetes,里面有很棒的pdf教程。