kubernetes-x/kubernetes-MD/kubernetes网络模型.md

41 lines
2.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1><center>kubernetes网络模型</center></h1>
著作:行癫 <盗版必究>
------
## 一:网络模型
每一个 `Pod`都有它自己的IP地址 这就意味着你不需要显式地在 `Pod` 之间创建链接, 不需要处理容器端口到主机端口之间的映射。 这将形成一个干净的、向后兼容的模型;在这个模型里,从端口分配、命名、服务发现、 负载均衡、应用配置和迁移的角度来看, `Pod` 可以被视作虚拟机或者物理主机。
Kubernetes 强制要求所有网络设施都满足以下基本要求:
节点上的 Pod 可以不通过 NAT 和其他任何节点上的 Pod 通信
节点上的代理比如系统守护进程、kubelet可以和节点上的所有 Pod 通信
运行在节点主机网络里的 Pod 可以不通过 NAT 和所有节点上的 Pod 通信
注意:
这个模型不仅不复杂,而且还和 Kubernetes 的实现从虚拟机向容器平滑迁移的初衷相符, 如果你的任务开始是在虚拟机中运行的,你的虚拟机有一个 IP 可以和项目中其他虚拟机通信。这里的模型是基本相同的。
Kubernetes 的 IP 地址存在于 `Pod` 范围内 - 容器共享它们的网络命名空间 - 包括它们的 IP 地址和 MAC 地址。 这就意味着 `Pod` 内的容器都可以通过 `localhost` 到达对方端口。 这也意味着 `Pod` 内的容器需要相互协调端口的使用,但是这和虚拟机中的进程似乎没有什么不同, 这也被称为“一个 Pod 一个 IP”模型。
Kubernetes 网络解决四方面的问题:
一个 Pod 中的容器之间通过本地回路loopback通信
集群网络在不同 pod 之间提供通信
Service 资源允许你对外暴露 Pods 中运行的应用程序, 以支持来自于集群外部的访问
可以使用 Services 来发布仅供集群内部使用的服务
## 二Kubernetes Network Policy
默认情况下Kubernetes 网络模型要求所有 pod 都能够访问所有其他 pod安全是一个重要的问题。实际上在许多情况下需要一定程度的网络分段方法来确保只有某些 pod 可以相互通信,这就是 Kubernetes 网络策略出现的时候。Kubernetes 网络策略定义 Pod 组的访问权限,就像云中的安全组用于控制对 VM 实例的访问一样Kubernetes 通过 NetworkPolicy 对象支持网络策略,该对象是 Kubernetes 资源,就像 pod、service、ingress 等其他资源一样。Network Policy 对象的作用是定义如何允许 Pod 组相互通信。
#### 1.Network Policy Definition