GKE中MongoDB自动扩缩容Pod未被Service调用问题求助
问题:GKE中MongoDB HPA扩容Pod无法被Service调用
背景与环境
我正尝试在GKE(Google Kubernetes Engine)中部署MongoDB,供仅需读取操作的微服务使用。为分摊负载,基于包含原有单容器MongoDB数据的镜像部署了多Pod,并配置HPA(水平Pod自动扩缩容)应对流量波动。
自定义MongoDB镜像的Dockerfile如下:
FROM mongo:latest EXPOSE 27017 COPY /mdb/ /data/db
核心问题现象
- 当CPU利用率超过阈值时,HPA能成功创建新Pod,但这些新Pod并未被对应Deployment的Service调用
- 新Pod的本地IP已出现在Service端点列表中
- 删除唯一正在工作的初始Pod后,自动扩缩容生成的其他Pod才被激活,性能得到提升,但后续新生成的Pod仍无法被调用
相关配置文件
MongoDB Deployment配置
apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-deployment labels: app: mongodb spec: replicas: 1 selector: matchLabels: app: mongodb template: metadata: labels: app: mongodb spec: containers: - name: mongodb image: "$my_mongodb_image_in_which_I_have_my_db" ports: - containerPort: 27017 resources: requests: memory: "1800Mi" cpu: "3000m"
MongoDB Service配置
apiVersion: v1 kind: Service metadata: name: mongodb-service spec: type: LoadBalancer loadBalancerIP: $IP_reserved_for_this_service selector: app: mongodb ports: - protocol: TCP port: 80 targetPort: 27017
客户端访问代码(集群内Pod通过pymongo访问)
def get_db(database: str): client = MongoClient(host="$IP_reserved_for_this_service", port=80, username="...", password="...", authSource="admin") return client.get_database(database)
请求帮助
我知道这种MongoDB使用和扩缩容方式可能不够合理,但作为初步尝试,希望解决该问题或了解其无法运行的原因。
内容的提问来源于stack exchange,提问作者JujuPat
相关产品推荐
相关产品推荐

