K8S 内部网络是如何工作的?
当我们提到 Kubernetes 内部网络时,大家可能会想到:
Pod 之间能通信吗?
服务是如何发现的?
Node 和 Pod 之间如何相互交流?
这些问题,其实都和 Kubernetes 的网络架构息息相关。今天,咱们就来聊聊Kubernetes 内部网络是如何工作的,让你彻底搞懂集群网络是如何高效运行的!🚀
🧠 Kubernetes 网络架构:底层原理
Kubernetes 提供了一套灵活且强大的网络模型,支持 Pod、Service、Ingress 等多种资源之间的通信。
1.Pod 网络模型
在 Kubernetes 中,Pod 是最小的部署单元,而每个 Pod 中可能有一个或多个容器。Pod 之间通过CNI(Container Network Interface)插件来实现网络连接。
🧩 特点:
- •每个 Pod 都有一个独立的 IP 地址,而且这个 IP 地址是唯一的。
- • Pod 与 Pod 之间可以通过 IP 地址直接通信,不需要通过 Node 地址或者其他中介。
- • Pod 内部的容器也共享相同的网络命名空间,意味着它们共享同一个 IP 地址、端口、DNS 等。
2.CNI 插件
Kubernetes 不提供默认的网络插件,而是允许你根据需要选择不同的CNI 插件,这些插件负责 Pod 之间的通信和网络配置。常见的 CNI 插件包括:
- •Calico:提供网络安全(Network Policies)和高效的 IP 分配。
- •Flannel:最简单的网络插件,支持多种模式(如 VXLAN、host-gw)。
- •Weave:提供跨主机网络和跨集群连接。
🌐 Service 网络:如何发现和负载均衡?
Kubernetes 中的Service资源用于暴露一组 Pod,并通过负载均衡来实现流量的分发。
1.ClusterIP(默认类型)
ClusterIP
是最常见的 Service 类型,它在集群内为服务分配一个虚拟 IP 地址。无论 Pod 如何变化,Service 都会保持稳定,客户端可以通过该 IP 地址访问服务。
🧩 特点:
- •虚拟 IP 地址:Service 会为一组 Pod 分配一个虚拟 IP 地址,客户端可以通过该 IP 来访问后端 Pod。
- •负载均衡:Kubernetes 会根据负载均衡策略,自动将请求路由到相应的 Pod。
- •端口映射:每个 Service 会指定一个端口,Pod 会映射这个端口。
apiVersion: v1
kind:Service
metadata:
name:my-service
spec:
selector:
app:my-app
ports:
-protocol:TCP
port:8080
targetPort: 80
2.NodePort
NodePort
类型的 Service 会在每个 Node 上开放一个端口,通过该端口可以访问服务。一般用来做外部访问或者用于开发环境中。
🧩 特点:
- •端口映射到 Node:每个 Node 上都会分配一个指定的端口,流量会通过该端口转发到后台的 Service 和 Pod。
- •外部访问:可以通过
NodeIP:NodePort
来访问 Service。
3.LoadBalancer
LoadBalancer
类型的 Service 适用于云环境,它会请求云服务提供商(如 AWS、GCP、Azure)提供外部负载均衡器。
🧩 特点:
- •自动创建负载均衡器:自动请求云提供商创建外部负载均衡器,并将流量转发到集群内的服务。
- •适用于生产环境:常用于暴露生产环境中的服务。
🚦 Pod 网络通信:如何保障网络隔离?
在 Kubernetes 集群中,我们通常需要保障不同服务之间的网络隔离和安全性。这里的关键就是NetworkPolicy(网络策略)。
1.NetworkPolicy
Kubernetes 提供了NetworkPolicy
资源来控制 Pod 之间的流量。你可以定义哪些 Pod 可以和其他 Pod 进行通信,哪些不能。NetworkPolicy
可以基于标签、命名空间、端口等多种条件进行控制。
🧩 特点:
- •流量控制:可以限制 Pod 的入站和出站流量。
- •安全性:通过网络策略,能对 Pod 间的通信进行精细控制。
例如,以下 NetworkPolicy 只允许带有role=db
标签的 Pod 访问带有role=frontend
标签的 Pod:
apiVersion: networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:allow-db-to-frontend
spec:
podSelector:
matchLabels:
role:frontend
ingress:
-from:
-podSelector:
matchLabels:
role: db
🏗️ 服务发现:如何自动化管理?
除了ClusterIP
和NodePort
,Kubernetes 还为服务发现提供了DNS解析支持。每当你创建一个新的 Service,Kubernetes 会自动为该 Service 创建一个 DNS 域名。
🧩DNS 解析:
每个 Service 都会拥有一个域名,你可以通过该域名在集群内访问该服务。例如,创建一个my-service
的 Service 后,你可以通过以下域名进行访问:
my-service.default.svc.cluster.local
- •
default
是命名空间 - •
svc
是 Kubernetes Service 的缩写 - •
cluster.local
是集群的默认域名
Kubernetes 内部的 DNS 服务会自动解析这些服务名,方便进行服务间的访问。
🔧 如何诊断 Kubernetes 网络问题?
-
1.查看 Pod 网络配置:
使用以下命令检查 Pod 的网络配置:kubectl describe pod <pod-name> -n <namespace>
-
2.查看 Service 配置:
使用以下命令查看 Service 配置和端口映射:kubectl describe service <service-name> -n <namespace>
-
3.检查 NetworkPolicy:
确保没有意外的网络策略限制了 Pod 间的通信:kubectl get networkpolicy -n <namespace>
-
4.Pod 间 Ping 测试:
如果要测试 Pod 间通信,可以直接进入 Pod 内部执行ping
测试:kubectl exec -it <pod-name> -- /bin/sh ping <target-pod-ip>
🧠 总结:Kubernetes 网络工作原理
- •Pod 网络:每个 Pod 有唯一的 IP 地址,Pod 之间可以直接通信。
- •CNI 插件:Kubernetes 支持多种 CNI 插件,控制网络和通信方式。
- •Service 网络:通过
ClusterIP
、NodePort
、LoadBalancer
实现服务发现与负载均衡。 - •NetworkPolicy:通过网络策略控制 Pod 间的流量,保障网络隔离与安全。
- •DNS 服务:Kubernetes 自动为每个 Service 提供 DNS 域名,便于服务发现。
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~
读者福利 |
CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
