k8s Service:给一组 Pod 稳定入口
341 字
2 分钟
k8s Service:给一组 Pod 稳定入口
k8s Service
Service 给一组 Pod 提供稳定访问入口。Pod 会销毁、重建、换 IP,但 Service 的名字和虚拟 IP 相对稳定。

它解决什么问题
Deployment 后面可能有多个 Pod:
user-api Pod A: 10.1.0.11user-api Pod B: 10.1.0.12user-api Pod C: 10.1.0.13客户端不应该记住这些 Pod IP,因为 Pod 随时会变化。Service 通过 label selector 找到这些 Pod,对外提供一个稳定入口。
client -> Service -> matching Pods最小示例
apiVersion: v1kind: Servicemetadata: name: user-servicespec: type: ClusterIP selector: app: user-service ports: - name: http port: 80 targetPort: 8000关键字段:
| 字段 | 作用 |
|---|---|
selector | 找到带有对应 label 的 Pod |
port | Service 暴露的端口 |
targetPort | Pod 容器里的端口 |
type | Service 暴露方式 |
Service 类型
| 类型 | 用途 |
|---|---|
ClusterIP | 只在集群内部访问,默认类型 |
NodePort | 通过每台 Node 的端口访问 |
LoadBalancer | 云厂商创建负载均衡器 |
ExternalName | 映射到外部 DNS 名称 |
实际项目例子
项目里有:
user-api:把流量转发到app: user-api的 Pod。admin-api:把流量转发到app: admin-api的 Pod。
本地调试时常用 port-forward:
kubectl port-forward -n demo svc/user-api 18000:80curl http://localhost:18000/readyz常用命令
kubectl get svc -n demokubectl describe svc user-api -n demokubectl get endpoints -n demo如果 Service 没有转发到 Pod,优先检查:
- Service 的
selector是否匹配 Pod 的labels。 - Pod 是否处于 Ready 状态。
targetPort是否等于容器实际监听端口。
相关笔记:pod、k8s deployment、Kubernetes 排障手册
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
k8s Service:给一组 Pod 稳定入口
https://blog.81vm3.xyz/posts/k8s-service/相关文章智能推荐
1
kubectl port-forward 端口转发
云原生与运维kubectl port-forward 转发 Pod/Service、让局域网访问以及常用排查命令。
2
kubectl 常用命令速查
云原生与运维kubectl 查看集群/资源/日志、进入容器、本地访问服务与部署删除的常用命令。
3
Kubernetes 集群架构总览
云原生与运维K8s 集群的控制平面组件(apiserver/etcd/scheduler/controller-manager)与节点组件(kubelet/kube-proxy)。
4
Minikube 本地集群
云原生与运维Minikube 的启停、复用其内部 Docker 构建镜像以及常用调试命令。
5
Grafana 可视化与监控
云原生与运维Grafana 的定位、常见数据源与 Grafana + Prometheus 经典监控链路。
随机文章随机推荐











