k8s-深入理解Service(为Pod提供负载均衡和发现)

一、Service存在的意义

二、Service的定义和创建

Pod与Service的关系

Service的定义和创建

三、Service使用NodePort对外暴露应用

四种类型,常用的三种:

指定Service的NodePort端口

在实际生产中,k8s的集群不会直接暴露在公网中,一般会在k8s集群前加一个负载均衡器,这个负载均衡器暴漏在公网。

四、Service负载均衡实现之iptables

Service代理模式

k8s默认使用iptables模式,如果要使用IPVS模式,需要单独启用IPVS模式,见下一小节。

查看iptables关于指定Service的负载均衡规则:

五、Service负载均衡实现之iptables

修改后,需要重新加载ConfigMap,有一个简单粗暴的方式,删除任一一个Pod,会自动重新加载ConfigMap。

查看ipvs规则,需要安装一个辅助工具

下面就是当前这个Pod设置Service暴露后,在IPVS的实际规则

rr - 轮询

实际上在宿主机上创建了一个虚拟网卡,用来接收内部流量请求

六、Service的DNS名称解析

创建一个临时的Pod,验证通过ServiceName访问Pod

正常解析到了,在程序代理里,可以使用ServiceName替换以前写的IP。

可以看到你请求的ServiceName,本质请求的是CoreDNS,CoreDNS保存有从K8s获得的A记录,然后返回真实服务IP。

七、iptables与ipvs对比

Iptables有性能衰减,k8s已将IPVS加入,IPVS性能非常稳定,建议使用IPVS。

相关推荐
Zhu7582 分钟前
docker环境快速部署postgresql数据库18及以上版本
postgresql·容器
安易算力2 小时前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
小马同学-3 小时前
nerdctl实战:Docker风格的Containerd操作利器
docker·容器·containerd
九皇叔叔4 小时前
Kubernetes 命令式对象配置详解:使用 YAML 管理 Kubernetes 资源
docker·容器·k8s
萤火夜5 小时前
Docker(四) Docker介绍
docker·容器
.冰块.6 小时前
Docker 镜像深度学习:分层 Copy‑on‑Write、Dockerfile 语法、Harbor 私有仓库实操
docker·容器·harbor·镜像·dockerfile·images
szephyr6 小时前
Docker 镜像瘦身实战:从 1.2GB 压到 85MB 的完整过程
docker·容器·部署·多阶段构建·镜像优化
小马同学-6 小时前
Containerd入门:架构原理与安装部署
容器·containerd
天天喝旺仔7 小时前
分布式服务容错实战:用 Sentinel 实现限流、熔断与降级
分布式·微服务·云原生·sentinel
小马同学-10 小时前
crictl实战:K8s容器运行时排障工具
容器·k8s·crictl