Kubernetes集群内的流量如何?

Kubernetes集群内的流量如何?,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,(在学习Kubernetes时,我从未真正找到任何好的资源来解释这一点) 场景: 我拥有mywebsite1.com和mywebsite2.com,我想把它们都放在Kubernetes集群中 我使用2个kubectl apply-f命令根据以下网站部署了一个通用云入口控制器。(强制性.yaml和通用入口.yaml) 所以问题是这个架构看起来像什么?数据如何流入集群?我将2个证书转换为2.key和2.crt文件 我使用这些文件来制作2个TLS机密(每个网站1个,这样他们就可以启用HTTPS) 我

(在学习Kubernetes时,我从未真正找到任何好的资源来解释这一点)

场景:
我拥有mywebsite1.com和mywebsite2.com,我想把它们都放在Kubernetes集群中

我使用2个
kubectl apply-f命令根据以下网站部署了一个通用云入口控制器。(强制性.yaml和通用入口.yaml)


所以问题是这个架构看起来像什么?数据如何流入集群?

我将2个证书转换为2.key和2.crt文件
我使用这些文件来制作2个TLS机密(每个网站1个,这样他们就可以启用HTTPS)

我创建了两个入口对象:

  • 其中一个是website1.com/,指向一个名为website1fe的服务,并引用了website1的HTTPS/TLS证书机密
    (website1fe服务仅侦听端口80,并将流量转发到website1fe部署生成的播客)

  • 另一个说website2.com/,指向一个名为website2fe的服务,并引用了website2的HTTPS/TLS证书机密
    (website2fe服务仅侦听端口80,并将流量转发到website2fe部署生成的播客)

我有一个3节点的Kubernetes群集,它存在于一个私有子网中
他们有IP

 10.1.1.10     10.1.1.11     10.1.1.12
当我运行2
kubectl apply-f命令
生成的命令:

  • kubernetes部署,其中包含运行Nginx L7 LB软件的吊舱,这些吊舱根据入口进行声明性配置。etcd中存储的yaml对象,由于Nginx L7 LB吊舱是自配置的,因此它们被称为入口控制器吊舱。(这些nginx入口控制器吊舱监听端口80和443。)
  • 负载平衡器类型的Kubernetes服务:负载平衡器类型的Kubernetes服务,在后台使用节点报告(节点报告可以安全使用,当节点具有私有IP时,节点报告会随机进行)(注意:服务类型LB在后台使用节点端口,这些节点端口将随机选取,云API将自动将云LB链接到正确的随机节点端口。或者,您可以使用服务类型NodePort并获得显式选取节点端口的选项。)从30000-32767的范围中选择,但为了清晰起见,我要说NodePort服务正在侦听集群中每个节点的端口30080和30443),云LB将自动配置,并存在于集群之外,具有公共IP地址(使用默认设置),并自动将流量路由到入口控制器公开的节点端口。(流量示例:LB:443-->NP:30443-->入口控制器POD:443-->Grafana:3000)
kubectl get svc--所有名称空间
给出L4 LB的IPv4 IP地址(假设它是可公开路由的IP 1.2.3.4)

因为我拥有这两个域:我配置internet DNS,以便website1.com和website2.com都指向1.2.3.4

注意:入口控制器具有云提供商意识,因此它会自动执行以下反向代理/负载平衡配置:

L4LB 1.2.3.4:80 --(LB between)--> 10.1.1.10:30080, 10.1.1.11:30080, 10.1.1.12:30080
L4LB 1.2.3.4:443 --(LB between)--> 10.1.1.10:30443, 10.1.1.11:30443, 10.1.1.12:30443
KubeProxy使任何节点的端口30080或30443上的请求在集群内转发到Nginx L7 LB/Ingress控制器服务,然后该服务将流量转发到L7 Nginx LB吊舱。
L7 Nginx LB吊舱终止*HTTPS连接,并将流量转发到website1.com和website2.com服务,这两个服务正在未加密的端口80上侦听。
(可以不加密,因为我们在集群中,没有人会嗅探流量。)(*注意有时云LB终止HTTPS,然后通过明文端口80转发到入口控制器,但这并不是那么糟糕的b/c,明文发生在私有IP空间上)
(Nginx L7 LB知道基于L7转发到哪个内部集群服务/网站(http://url)通信量进入的地址)


注意要避免的错误: 假设website1.com想要访问website2.com上存在的一些资源

Well website2.com实际上有两个IP地址和两个DNS名称。

website2fe.default.svc.cluster.local@neikyle,感谢您的教程。您提到“KubeProxy使任何节点的端口30080或30443上的请求在集群内转发到Nginx L7 LB/Ingress控制器服务。”我猜这是指“NP:30443-->IngressControllerPod:443”这一步。
但这到底是如何做到的?
在实践中,节点端口是在30000-32767之间随机选择的,那么L7入口如何从这些随机端口获得流量,然后转发到正确的后端服务(例如Grafana:3000)这一较长的流有意义吗:L4LB 1.2.3.4:80--(LB-between)-->10.1.1.10:30080,10.1.1.11:30080,10.1.1.12:30080-->Nginx L7 LB/Ingress控制器服务-->Nginx L7 LB吊舱(例如侦听80/443)-->任何服务(例如grafana:3000)和此服务:L4LB 1.2.3.4:9001-->10.1.1.10:31901,10.1.1.11:31901,10.1.1.12:31901-->Nginx L7 LB/Ingress控制器服务-->Nginx L7 LB/Ingress控制器吊舱(如监听80/443)-->任何服务(如sql:1434)@康巧昭我根据您的评论更正了部分解释,因此感谢您的反馈。服务类型负载平衡器在幕后使用nodeport,在这种情况下,它将随机选择nodeport。服务类型负载平衡器使用云API提供和配置一个云LB,该LB将自动映射到随机选择的nodeport云LB的前端端口和say Grafana:3000的后端端口将被显式拾取(另请注意:您可以直接使用NodePort并显式拾取使用的NodePort)提到的第一个流是从开始制作的。第二个没有,HTTPS无法转到SQLHere有一个更好的深入教程/带图片的解释/3部分文章。免责声明:我写了一系列文章,还请注意,该页面上没有广告/我不想自我介绍