kubernetes Ingress
kubernetes专业名词解释
Ingress
在这边文章中你将会看到一些在其他地方被交叉使用的术语,为了防止产生歧义,我们首先来澄清下。
- 节点:Kubernetes集群中的一台物理机或虚拟机
- 集群:位于Internet防火墙后的节点,这是kubernetes管理的主要计算资源
- 边界路由器:为集群强制执行防火墙策略的路由器。这可能是由云提供商或物理硬件管理的网关。
- 集群网络:一组逻辑或物理链接,可根据kubernetes网络模型实现群集内的通信。集群网络的实现包括Overlay模型的 flannel 和基于SDN的OVS。
- 服务:使用标签选择器标识一组pod成为的Kubernetes服务。除非另有说明,否则服务假定在集群网络内尽可通过虚拟IP访问。
什么是Ingress?
通常情况下,service和pod的IP仅可在集群内部访问。集群外部的请求需要通过负载均衡转发到 service 在 Node 上暴露的 NodePort 上,然后再由 kube-proxy 通过边缘路由器( edge router )将其转发给相关的 pod 或者丢弃。如下图所示
internet
|
-------------
[Services]
而 Ingress 就是为进入集群的请求提供路由规则的集合,如下图所示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BgZvU5gt-1674007584103)(D:\study\k8s\kubernetes_Ingress.jpg)]
Ingress 可以给 service 提供集群外部访问的 URL、负载均衡、SSL 终止、HTTP 路由等。为了配置这些 Ingress 规则,集群管理员需要部署一个 Ingress controller,它监听 Ingress 和 service 的变化,并根据规则配置负载均衡并提供访问入口。
Ingress的组成部分
Nginx:实现负载均衡到 pod 的集合
Ingress Controller:从集群 api 获取 services 对应 pod 的 ip 到 nginx 配置文件中
Ingress:为 nginx 创建虚拟机