Kubernetes之Ingress认识

Kubernetes之Ingress认识

Ingress基本认识

  • 在之前我们通过Service的类型 ClusterIP、NodePort、LoadBlance中的NodePort实现端口的暴露,实现任意node节点+暴露的端口实现pod的访问

  • 这种方式就有一个缺陷

    • 我们所暴露的那个端口,在每个节点上都会被占用,也就是一个端口在集群中只能对应一个应用,只能使用一次

    • 实际访问中,一般我们都是通过域名来访问,然后根据域名来跳转到固定的ip,实现服务访问

    • 这时候,NodePort这种方式就出现了弊端,我该如何通过域名实现负载均衡访问我所有的pod呢?

  • ingress的出现就解决了这个尴尬问题

Ingress的工作流程

Ingress和Pod的关系

  • 通过上图我们可以知道

    • ingress是通过Service和pod关联的

      • service是通过标签labels关联pod的

    • ingress作为统一的入口,会维护很多的域名

      • 这些域名与Service进行关联

      • 实现一个域名与多个pod进行关联,实现负载均衡

部署并使用:Ingress

环境初始化

  • 我们创建一个测试的pod

    • kubectl create deployment webnginx --image nginx

  • 暴露我们创建的pod

    • kubectl expose deployment webnginx --port 80 --target-port 80 --type NodePort

    • 这个时候我们已经可以通过节点IP + 暴露的端口进行访问服务了

部署ingress

  • 然后就是部署Ingress了,这里我们使用官方维护的nginx控制器,实现部署

查看ingress部署信息

  • 然后我们查看一下该pod

    • 该资源编排文件是创建了一个名称空间的

    • 所以我们需要制定名称空间去查看

  • 查看ingress的pod部署信息

    • kubectl get pods -n ingress-nginx

配置ingress规则

  • ingress是创建好了,至于上面我们画的流程图该如何实现了,这就需要我们手动去配置实现了

    • ingress-rule.yaml [提取码:6666]

    • 然后我们可以来解读一下里面配置的规则

  • 部署ingress-rule.yaml

  • 我们可以看到ingress 部署到了node1节点

  • 此时我们想要在浏览器进行访问,需要在win10的hosts文件中配置一下路由规则

    • 因为我们的服务不是在公网,所以需要做以下操作,做域名映射

      • 修改:C:WindowsSystem32driversetchosts 文件

      • 前面是我们部署ingress Pod的节点ip,后面是我们部署的ingress规则监听的域名

测试

  • 我们再次查看一下ingress的服务以及监听的端口

  • 然后我们使用浏览器开始访问

.

原文地址:https://www.cnblogs.com/msi-chen/p/14346893.html