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。

相关推荐
言之。1 小时前
K8s CoreDNS 核心知识点总结
云原生·容器·kubernetes
项目題供诗1 小时前
黑马k8s(十一)
云原生·容器·kubernetes
国际云,接待2 小时前
腾讯云怎么在游戏云中助力
服务器·游戏·云原生·重构·云计算·腾讯云
牛奔10 小时前
Docker配置远程连接
运维·docker·云原生·容器·eureka
在未来等你11 小时前
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
java·微服务·ai·kubernetes·大模型·embedding·spring ai
my_styles11 小时前
docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
spring boot·redis·后端·mysql·spring cloud·docker·容器
格桑阿sir12 小时前
Kubernetes控制平面组件:Kubelet详解(七):容器网络接口 CNI
kubernetes·k8s·kubelet·flannel·cni·calico·网络模型
天天爱吃肉821813 小时前
【低成本STM32的T-BOX开发实战:高可靠的车联网解决方案】
stm32·单片机·嵌入式硬件·云原生
Liudef0614 小时前
使用Docker部署MongoDB
mongodb·docker·容器
庸子14 小时前
Serverless技术深度整合:从冷启动优化到边缘场景落地
云原生·架构·serverless