为什么我们需要 Pod 之间的点对点连接,而我们有工作负载抽象和网络机制(Service/kube-proxy/Ingress 等)?
通常,您会在本文档中找到有关集群中网络的所有信息。您可以找到有关pod 网络的更多信息:
每个Pod
都有自己的 IP 地址。这意味着您不需要显式地在它们之间创建链接,Pods
并且几乎不需要处理将容器端口映射到主机端口的问题。这创建了一个干净、向后兼容的模型,Pods
从端口分配、命名、服务发现、负载平衡、应用程序配置和迁移的角度来看,可以将其视为虚拟机或物理主机。
Kubernetes 对任何网络实现都提出了以下基本要求(除非任何有意的网络分段策略):
- 一个节点上的 pod 可以与所有节点上的所有 pod 通信,无需 NAT
- 节点上的代理(例如系统守护进程、kubelet)可以与该节点上的所有 pod 通信
注意:对于那些支持 Pods
在宿主网络中运行的平台(例如 Linux):
- 一个节点的宿主网络中的 pod 可以与所有节点上的所有 pod 通信,无需 NAT
然后你问:
默认cni是什么?
Kubernetes 集群中没有单一的默认CNI。这取决于您遇到的类型、设置集群的位置和方式等。正如您在阅读这篇关于实现网络模型的文档时看到的,Kubernetes 中有许多 CNI 可用。
Istio是一个完全不同的工具。你不能这样比较它们。Istio 是一个服务网格工具。
Istio 扩展了 Kubernetes 以使用强大的 Envoy 服务代理建立一个可编程的、应用感知的网络。Istio 与 Kubernetes 和传统工作负载一起使用,为复杂的部署带来了标准的通用流量管理、遥测和安全性。