我已经在我的 k8s 集群中部署了有状态的 mongodb 设置。每次扩展新的 pod 时,我都需要使用 rs.add() 命令从 mongodb 控制台添加 pod。有什么方法可以编排这个吗?..另外,如何在 k8s 集群之外公开我的 mongodb 服务。.将服务类型更改为 nodeport 对我来说不起作用..请帮忙。
下面给出了我用来部署 mongodb 的有状态 yaml 文件。
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
name: mongo
spec:
ports:
- port: 27017
targetPort: 27017
clusterIP: None
selector:
role: mongo
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongo
spec:
serviceName: "mongo"
replicas: 3
template:
metadata:
labels:
role: mongo
environment: test
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: mongo:3.4
command:
- mongod
- "--replSet"
- rs0
- "--bind_ip"
- 0.0.0.0
- "--smallfiles"
- "--noprealloc"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db
- name: mongo-sidecar
image: cvallance/mongo-k8s-sidecar
env:
- name: MONGO_SIDECAR_POD_LABELS
value: "role=mongo,environment=test"
volumeClaimTemplates:
- metadata:
name: mongo-persistent-storage
annotations:
volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 2Gi
最佳答案
当您使用 Kubernetes(容器编排平台)时,您始终可以使用 $ kubectl scale deployment [deployment_name] --reppplicas=X 来扩展您的
其中 X 表示您希望部署的 Pod 总数。它将根据您的部署设置自动创建 Pod。
如果您不想手动创建它,您应该阅读有关 Kubernetes 自动缩放的内容 - HPA .deployment/statefulset
或 $ kubectl scale statefulset [statefulset-name] --replicas=X
关于在 Kubernetes 之外公开应用程序,您必须使用 Service
来完成。更多信息可查询here 。我不确定 NodePort 在这种情况下是否正确。您可以查看ServiceType描述。
但是我对 MongoDB 和 Kubernetes 不太熟悉,但也许这些教程对你有帮助。 Scaling MongoDB on Kubernetes , Running MongoDB as a Microservice with Docker and Kubernetes , Running MongoDB on Kubernetes with StatefulSets .
希望能有所帮助。
关于mongodb - Kubernetes MongoDB 自动缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993664/