• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

MongoDB 使用几个默认端口?在k8s单个节点部署多个实例如何处理这些端口映射关系

在 Kubernetes 上部署多个 MongoDB 实例时,确实需要处理好端口映射关系,以避免端口冲突。MongoDB 默认使用的是 27017 端口,但可以通过配置文件指定不同的端口。

MongoDB 默认端口

主端口

27017(用于客户端连接)

其他端口

- 27018(用于副本集成员之间的通信)
- 27019(用于其他用途,如内部管理)

 在 Kubernetes 上部署多个 MongoDB 实例

修改 MongoDB 配置文件

每个 MongoDB 实例需要有不同的端口配置。可以在 `mongod.conf` 文件中指定不同的端口。

例如,第一个实例的配置文件 `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 配置文件

 Deployment 和 Service 配置

对于每个 MongoDB 实例,创建一个单独的 Deployment 和 Service。

**第一个实例的 Deployment 和 Service**

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

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

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 配置文件。

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 集群中。

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 都正确运行。

 

kubectl get pods
kubectl get services

测试连接

从另一个 Pod 中测试连接到各个 MongoDB 服务。

kubectl run -it --rm --image=busybox test-mongo -- sh

 

在容器内执行

apk add busybox-extras
telnet mongodb1-service 27017
telnet mongodb2-service 27018
telnet mongodb3-service 27019

  

通过上述步骤,你可以在 Kubernetes 单个节点上部署多个 MongoDB 实例,并正确处理端口映射关系。

posted @ 2024-11-14 14:05  JackYang  阅读(214)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3