k8s的service及相关知识
k8s的service网络
K8s内部网络整体图
Service是什么:
- k8s定义服务是一种将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。
- 这些Pod拥有相同的selector==》label
- k8s为Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。
- 而且使用 k8s,你无需修改应用程序,即可使用不熟悉的服务发现机制,黑盒式使用,简单易上手。
Service为什么出现的?缘由
- Pod是临时资源,随时可能被创建、删除等。参考Depolyment
- 每个Pod有自己的IP
- Pod创建、删除后,完整的服务应该都能正常工作,就需要一个前后端隔离的“代理层”,能够统筹后端的所有Pod
- 前端不关心现在有哪些Pod,前端只需要关注一个点==》service即可
那k8s为啥不用DNS轮询机制,而要自己实现一套流量转发机制呢?
DNS有缓存
注意:service与nignx不同
那k8s是怎么做的呢
插入一个知识点:k8s中的IP
Node IP:Node节点的IP地址,即物理网卡的IP地址
Pod IP:Pod的IP地址,即docker容器的IP地址,此为虚拟IP地址。
Cluster IP:Service的IP地址,此为虚拟IP地址。
每个Node上运行kube-proxy,kube-proxy管理service的入口。
kube-proxyt通过监听api种service的变化,可以使用endpiont来记录所有pod的ip
service对外暴露一个V IP,也成为Cluster IP,集群内通过访问这个Cluster IP:Port就能访问到集群内对应的serivce下的Pod。
kube-proxy的代理示意图(user space)
附:
获取Node IP
1.kubectl get nodes
2.kubectl describe node nodeName
3.显示出来的InternalIP就是NodeIP
获取Pode IP
1.kubectl get pods
2.kubectl describe pod podName
获取Cluster IP
kubectl get svc
参考:https://kubernetes.io/docs/concepts/services-networking/service
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性