author:魏静崎
2025年6月21日
K8s学习
来源:学习b站薪享宏福Kubernetes课程
Service概述
Kubernetes Service
定义了这样一种抽象:一个 Pod
的逻辑分组,一种可以访问它们的策略 —— 通常称为微服务。 这一组 Pod
能够被 Service
访问到,通常是通过 Label Selector
。
在 Kubernetes 集群中,每个 Node 运行一个 kube-proxy
进程。kube-proxy
负责为 Service
实现了一种 VIP(虚拟 IP)的形式。
工作原理:
userspace
kube-proxy
监听 APISERVER 将 Service 变化修改本地的 iptables 规则,代理来自当前节点 pod 的用户请求
iptables
kube-proxy
监听 APISERVER 将 Service 变化修改本地的 iptables 规
优点:相对于 userspace,kube-proxy 功能解耦,压力较小
Service类型
ClusterIp:默认类型,自动分配一个仅 Cluster 内部可以访问的虚拟 IP
NodePort:在 ClusterIP 基础上为 Service 在每台机器上绑定一个端口,这样就可以通过
LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部负载均衡器,并将请求转发到
ExternalName:把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 kubernetes 1.7 或更高版本的 kube-dns 才支持
svc 选中 pod 的逻辑:
pod 是处于就绪状态
pod 的标签是 svc 标签的集合(同一个名字空间下)
LVS 持久化连接
ipvsadm -A -t 192.168.66.100:80 -s rr -p 120
应用场景:HTTPS 请求
SVC
CLUSTERIP
internalTrafficPolicy
Cluster:
集群节点的工具可以通过虚拟IP进行访问
集群内部的 Pod 可以通过虚拟 IP 进行访问
Local:
仅仅只支持集群内部的 Pod 可以通过虚拟 IP 进行访问
NodePort
internalTrafficPolicy
Cluster:
集群节点的工具可以通过虚拟IP进行访问
集群内部的 Pod 可以通过虚拟 IP 进行访问
Local:
仅仅只支持集群内部的 Pod 可以通过虚拟 IP 进行访问
externalTrafficPolicy
Cluster:
集群以外的客户端可以通过节点的物理网卡的物理 IP 对应的端口进行访问
集群节点的工具可以通过节点的物理网卡的物理 IP 对应的端口进行访问
Local:
仅仅只支持集群节点的工具可以通过节点的物理网卡的物理 IP 对应的端口进行访问
Service endpoints
有标签选择器
自动创建一个同名的 endpoints 资源对象
匹配对象:当前名字空间中的 pod
标签子集运算
就绪的
没有定义标签选择器
不会创建同名的 endpoints 资源对象,需要管理员手动创建
匹配对象:管理员填写的端点信息
- 本文作者: 魏静崎
- 本文链接: https://slightwjq.github.io/2025/06/02/K8s学习-5 Service/
- 版权声明: 该文章来源及最终解释权归作者所有