一、service核心
- Service 是 K8s 四层负载均衡,依靠 Label 标签选择 Pod,Endpoint 保存后端 Pod 真实 IP 端口。标签不匹配则无 Endpoint,服务不通。
- kube‑proxy 两种转发模式:iptables (默认)、ipvs (LVS 高性能,大规模集群推荐)。
- Service 四种类型:
- ClusterIP:集群内部访问;Headless 无头服务
clusterIP:NoneDNS 直接返回 PodIP,用于 StatefulSet。 - NodePort:所有节点开启端口对外访问,端口区间默认 30000‑32767。
- LoadBalancer:外部负载均衡,自建集群依赖 MetalLB 组件分配外部 IP。
- ExternalName:DNS 别名指向外部域名,无代理。
- ClusterIP:集群内部访问;Headless 无头服务
二、ingress核心
- Service 四层,Ingress 七层(HTTP/HTTPS);Ingress 资源是配置,Ingress‑Nginx‑Controller 才是真正 Nginx 代理 Pod。
- Ingress 支持:路径路由、域名虚拟主机、TLS 证书加密、http 强制跳转 https、URL 重写、BasicAuth 账号密码认证。
- Canary 金丝雀灰度:两种策略:Header 头匹配灰度、流量权重百分比灰度,新版本小流量验证,降低发布风险。
企业选型建议
- 集群内部服务调用:ClusterIP。
- 有状态应用 StatefulSet:Headless Service。
- Web 业务对外发布:优先 Ingress‑Nginx(七层)。
- 自建裸金属 K8s 需要 LoadBalancer:部署 MetalLB。
- 大规模集群 kube‑proxy 开启 ipvs 模式,提升转发性能。
- NodePort 仅用于测试,生产环境尽量不要直接使用。
三、理解标签与service中的endpoint
1.建立一个service

watch -n 1 "kubectl describe svc testservice ; kubectl get pods --show-labels " 监控

监控可以看到endpoints为空,说明没有被暴露的业务
2.建立pod并测试pod是否可以被testservice暴漏


监控处没有被暴露的业务

更改标签后访问服务ip,发现业务被暴露

监控处显示endpoints的ip
四、利用service暴露控制器
watch -n 1 "kubectl describe svc webservice ; kubectl get deploy --show-labels;kubectl get pods -o wide --show-labels " 监控
1.生成控制器和service的组合yaml

2.控制器和service信息

访问测试

自动负载均衡
五、service的ipvs模式
kube‑proxy 把 Service 的 ClusterIP/NodePort 转换成内核转发规则,拦截访问 Service 的流量,调度转发到后端 Endpoints (Pod)
1.在所有节点安装ipvsadm工具

2.配置集群中的kubu-proxy



效果

六、service的clusterIP类型
1.clusterip(默认)



vip模式访问此ip可以进行调度
2.在k8s集群内部解析

集群内部通常使用service的解析名称进行通信地址的指定,因为资源的ip会变但是名字不会
3.clusterIP的headless模式

当设定此模式,那么service不会被分配一个ip而是直接把endpoints上的ip直接通过dns裸漏


七、service的nodeport模式
在每个集群节点上开放一个物理端口(30000‑32767 默认范围)。访问任意节点IP:NodePort端口,流量转发给 Service 后端 Pod


测略查看

访问
八、loadbalancer模式
在 NodePort 基础之上,对接外部负载均衡器,分配独立外部 IP
1.建立service

2.构建metalLB
上传镜像

更改kube-proxy


更改metallb的配置文件


重新开启loadbalancer服务看是否有ip

九、extrnalname
不代理、没有端点,只是 DNS CNAME 别名,把集群内部 Service 解析映射到外部域名。

十、ingress七层代理
1.ingress部署
下载deploy文件

准备ingress所需镜像

更改deploy.yaml


通过deploy.yaml部署ingress

2.ingress功能的基本实现
建立ingress代理的微服务



建立ingress

测试

3.基于域名的访问

测试

4.基于动静分离的方式

测试

5.tls加密访问


测试

6.auth认证
安装生成认证文件模具的工具

生成认证文件


将认证文件注入k8s中

在ingress中配置auth认证

验证
