admin管理员组文章数量:1032395
Mongo 对外服务端口有那些?在同一k8s节点部署多个Mongo 服务如何处理
在 Kubernetes 上部署多个 MongoDB 实例时,确实需要处理好端口映射关系,以避免端口冲突。MongoDB 默认使用的是 27017 端口,但可以通过配置文件指定不同的端口。
MongoDB 默认端口
主端口
27017(用于客户端连接)
其他端口
- 27018(用于副本集成员之间的通信) - 27019(用于其他用途,如内部管理)
在 Kubernetes 上部署多个 MongoDB 实例
修改 MongoDB 配置文件
每个 MongoDB 实例需要有不同的端口配置。可以在 `mongod.conf` 文件中指定不同的端口。
例如,第一个实例的配置文件 `mongod1.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27017
bindIp: 0.0.0.0
第二个实例的配置文件 `mongod2.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27018
bindIp: 0.0.0.0
第三个实例的配置文件 `mongod3.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27019
bindIp: 0.0.0.0
创建 Kubernetes 配置文件
Deployment 和 Service 配置
对于每个 MongoDB 实例,创建一个单独的 Deployment 和 Service。
**第一个实例的 Deployment 和 Service**
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb1
spec:
replicas: 1
selector:
matchLabels:
app: mongodb1
template:
metadata:
labels:
app: mongodb1
spec:
containers:
- name: mongodb1
image: mongo:latest
ports:
- containerPort: 27017
volumeMounts:
- mountPath: /data/db
name: mongodb1-data
command: ["mongod", "--config", "/etc/mongod1.conf"]
volumeMounts:
- mountPath: /etc/mongod1.conf
name: config-volume
subPath: mongod1.conf
volumes:
- name: mongodb1-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod1.conf
path: mongod1.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb1-service
spec:
selector:
app: mongodb1
ports:
- protocol: TCP
port: 27017
targetPort: 27017
type: ClusterIP
第二个实例的 Deployment 和 Service
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb2
spec:
replicas: 1
selector:
matchLabels:
app: mongodb2
template:
metadata:
labels:
app: mongodb2
spec:
containers:
- name: mongodb2
image: mongo:latest
ports:
- containerPort: 27018
volumeMounts:
- mountPath: /data/db
name: mongodb2-data
command: ["mongod", "--config", "/etc/mongod2.conf"]
volumeMounts:
- mountPath: /etc/mongod2.conf
name: config-volume
subPath: mongod2.conf
volumes:
- name: mongodb2-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod2.conf
path: mongod2.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb2-service
spec:
selector:
app: mongodb2
ports:
- protocol: TCP
port: 27018
targetPort: 27018
type: ClusterIP
第三个实例的 Deployment 和 Service
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb3
spec:
replicas: 1
selector:
matchLabels:
app: mongodb3
template:
metadata:
labels:
app: mongodb3
spec:
containers:
- name: mongodb3
image: mongo:latest
ports:
- containerPort: 27019
volumeMounts:
- mountPath: /data/db
name: mongodb3-data
command: ["mongod", "--config", "/etc/mongod3.conf"]
volumeMounts:
- mountPath: /etc/mongod3.conf
name: config-volume
subPath: mongod3.conf
volumes:
- name: mongodb3-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod3.conf
path: mongod3.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb3-service
spec:
selector:
app: mongodb3
ports:
- protocol: TCP
port: 27019
targetPort: 27019
type: ClusterIP
创建 ConfigMap
创建一个 ConfigMap 来存储不同的 MongoDB 配置文件。
代码语言:javascript代码运行次数:0运行复制apiVersion: v1
kind: ConfigMap
metadata:
name: mongodb-configmap
data:
mongod1.conf: |
net:
port: 27017
bindIp: 0.0.0.0
mongod2.conf: |
net:
port: 27018
bindIp: 0.0.0.0
mongod3.conf: |
net:
port: 27019
bindIp: 0.0.0.0
应用配置
将所有的配置文件应用到 Kubernetes 集群中。
代码语言:javascript代码运行次数:0运行复制kubectl apply -f mongodb1-deployment.yaml
kubectl apply -f mongodb2-deployment.yaml
kubectl apply -f mongodb3-deployment.yaml
kubectl apply -f mongodb-configmap.yaml
验证部署
确保所有 Pod 和 Service 都正确运行。
代码语言:javascript代码运行次数:0运行复制kubectl get pods
kubectl get services
测试连接
从另一个 Pod 中测试连接到各个 MongoDB 服务。
代码语言:javascript代码运行次数:0运行复制kubectl run -it --rm --image=busybox test-mongo -- sh
在容器内执行
代码语言:javascript代码运行次数:0运行复制apk add busybox-extras
telnet mongodb1-service 27017
telnet mongodb2-service 27018
telnet mongodb3-service 27019
通过上述步骤,你可以在 Kubernetes 单个节点上部署多个 MongoDB 实例,并正确处理端口映射关系。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-11-18,如有侵权请联系 cloudcommunity@tencent 删除配置部署服务服务端连接Mongo 对外服务端口有那些?在同一k8s节点部署多个Mongo 服务如何处理
在 Kubernetes 上部署多个 MongoDB 实例时,确实需要处理好端口映射关系,以避免端口冲突。MongoDB 默认使用的是 27017 端口,但可以通过配置文件指定不同的端口。
MongoDB 默认端口
主端口
27017(用于客户端连接)
其他端口
- 27018(用于副本集成员之间的通信) - 27019(用于其他用途,如内部管理)
在 Kubernetes 上部署多个 MongoDB 实例
修改 MongoDB 配置文件
每个 MongoDB 实例需要有不同的端口配置。可以在 `mongod.conf` 文件中指定不同的端口。
例如,第一个实例的配置文件 `mongod1.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27017
bindIp: 0.0.0.0
第二个实例的配置文件 `mongod2.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27018
bindIp: 0.0.0.0
第三个实例的配置文件 `mongod3.conf`:
代码语言:javascript代码运行次数:0运行复制net:
port: 27019
bindIp: 0.0.0.0
创建 Kubernetes 配置文件
Deployment 和 Service 配置
对于每个 MongoDB 实例,创建一个单独的 Deployment 和 Service。
**第一个实例的 Deployment 和 Service**
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb1
spec:
replicas: 1
selector:
matchLabels:
app: mongodb1
template:
metadata:
labels:
app: mongodb1
spec:
containers:
- name: mongodb1
image: mongo:latest
ports:
- containerPort: 27017
volumeMounts:
- mountPath: /data/db
name: mongodb1-data
command: ["mongod", "--config", "/etc/mongod1.conf"]
volumeMounts:
- mountPath: /etc/mongod1.conf
name: config-volume
subPath: mongod1.conf
volumes:
- name: mongodb1-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod1.conf
path: mongod1.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb1-service
spec:
selector:
app: mongodb1
ports:
- protocol: TCP
port: 27017
targetPort: 27017
type: ClusterIP
第二个实例的 Deployment 和 Service
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb2
spec:
replicas: 1
selector:
matchLabels:
app: mongodb2
template:
metadata:
labels:
app: mongodb2
spec:
containers:
- name: mongodb2
image: mongo:latest
ports:
- containerPort: 27018
volumeMounts:
- mountPath: /data/db
name: mongodb2-data
command: ["mongod", "--config", "/etc/mongod2.conf"]
volumeMounts:
- mountPath: /etc/mongod2.conf
name: config-volume
subPath: mongod2.conf
volumes:
- name: mongodb2-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod2.conf
path: mongod2.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb2-service
spec:
selector:
app: mongodb2
ports:
- protocol: TCP
port: 27018
targetPort: 27018
type: ClusterIP
第三个实例的 Deployment 和 Service
代码语言:javascript代码运行次数:0运行复制apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb3
spec:
replicas: 1
selector:
matchLabels:
app: mongodb3
template:
metadata:
labels:
app: mongodb3
spec:
containers:
- name: mongodb3
image: mongo:latest
ports:
- containerPort: 27019
volumeMounts:
- mountPath: /data/db
name: mongodb3-data
command: ["mongod", "--config", "/etc/mongod3.conf"]
volumeMounts:
- mountPath: /etc/mongod3.conf
name: config-volume
subPath: mongod3.conf
volumes:
- name: mongodb3-data
emptyDir: {}
- name: config-volume
configMap:
name: mongodb-configmap
items:
- key: mongod3.conf
path: mongod3.conf
---
apiVersion: v1
kind: Service
metadata:
name: mongodb3-service
spec:
selector:
app: mongodb3
ports:
- protocol: TCP
port: 27019
targetPort: 27019
type: ClusterIP
创建 ConfigMap
创建一个 ConfigMap 来存储不同的 MongoDB 配置文件。
代码语言:javascript代码运行次数:0运行复制apiVersion: v1
kind: ConfigMap
metadata:
name: mongodb-configmap
data:
mongod1.conf: |
net:
port: 27017
bindIp: 0.0.0.0
mongod2.conf: |
net:
port: 27018
bindIp: 0.0.0.0
mongod3.conf: |
net:
port: 27019
bindIp: 0.0.0.0
应用配置
将所有的配置文件应用到 Kubernetes 集群中。
代码语言:javascript代码运行次数:0运行复制kubectl apply -f mongodb1-deployment.yaml
kubectl apply -f mongodb2-deployment.yaml
kubectl apply -f mongodb3-deployment.yaml
kubectl apply -f mongodb-configmap.yaml
验证部署
确保所有 Pod 和 Service 都正确运行。
代码语言:javascript代码运行次数:0运行复制kubectl get pods
kubectl get services
测试连接
从另一个 Pod 中测试连接到各个 MongoDB 服务。
代码语言:javascript代码运行次数:0运行复制kubectl run -it --rm --image=busybox test-mongo -- sh
在容器内执行
代码语言:javascript代码运行次数:0运行复制apk add busybox-extras
telnet mongodb1-service 27017
telnet mongodb2-service 27018
telnet mongodb3-service 27019
通过上述步骤,你可以在 Kubernetes 单个节点上部署多个 MongoDB 实例,并正确处理端口映射关系。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-11-18,如有侵权请联系 cloudcommunity@tencent 删除配置部署服务服务端连接本文标签: Mongo 对外服务端口有那些在同一k8s节点部署多个Mongo 服务如何处理
版权声明:本文标题:Mongo 对外服务端口有那些?在同一k8s节点部署多个Mongo 服务如何处理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747933940a2229951.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论