基于Kubernetes编排,从已部署微服务访问端点的技术咨询
嘿,看起来你已经在Kubernetes部署微服务的路上摸得门清啦!针对你目前的2节点集群场景,我给你整理了实用的Deployment和ClusterIP Service配置示例,还有关键知识点的梳理,帮你顺畅推进部署:
核心资源配置与关键点解析
1. Deployment配置(实现伸缩与自愈)
Deployment绝对是你管理无状态微服务的最佳拍档——它能帮你轻松实现副本伸缩、滚动更新和故障自愈,完美适配你的场景。这里给你一个基础的可直接复用的配置:
apiVersion: apps/v1 kind: Deployment metadata: name: demo-ms-deployment labels: app: demo-microservice spec: replicas: 2 # 对应你的2节点集群,可根据业务需求调整数量 selector: matchLabels: app: demo-microservice # 必须和下面Pod的标签完全匹配 template: metadata: labels: app: demo-microservice spec: containers: - name: demo-ms-container image: your-docker-image:tag # 替换成你的实际镜像地址和版本号 ports: - containerPort: 8080 # 微服务容器内部暴露的端口
小提示:如果想让两个节点各跑一个副本,可以添加
topologySpreadConstraints配置,强制K8s把Pod调度到不同节点上,避免单点故障。
2. ClusterIP Service配置(实现集群内部服务发现)
用ClusterIP类型的Service来做服务发现是集群内部访问的标准操作——它会自动分配一个集群专属的IP,通过标签关联到你的Deployment Pods,让集群内其他组件不用记Pod的临时IP就能访问服务。示例配置如下:
apiVersion: v1 kind: Service metadata: name: demo-ms-service spec: type: ClusterIP selector: app: demo-microservice # 和Deployment里Pod的标签保持一致 ports: - protocol: TCP port: 80 # Service对外暴露的端口(集群内部访问用) targetPort: 8080 # 对应Pod容器的端口
部署完成后,集群内的其他Pod可以通过demo-ms-service.default.svc.cluster.local(默认命名空间下)这个DNS名称访问你的微服务,完全不用关心Pod的动态变化,这就是服务发现的核心价值~
对了,你提到还有两个具体问题没展开,不管是副本调度异常、服务访问不通,还是伸缩策略的优化,只要把场景细节说清楚,我都能帮你针对性解决!
内容的提问来源于stack exchange,提问作者Mr.DevEng
相关产品推荐
相关产品推荐

