文章目录

  • ingress简介
  • 具体实验
  • 直接指定后端的服务名称
  • 通过域名的形式来访问后端
  • 通过不同的域名定义到不同的后端
  • 测试访问同一域名,不同的path时,调度到不同的后端


ingress简介

我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过kubernetes的service机制是无法实现的,这种情况我们可以使用ingress策略定义和一个具体的ingress Controller,两者结合实现一个完整的Ingress 负载均衡,这个负载均衡是基于nginx七层反向代理来实现

k8s ingress 变慢 k8s的ingress到底是什么_Pod


下图即为Ingress Controller这种独特的控制器资源的工作流程图.

需要注意: Ingress Controller 和 Ingress是两个不同的资源

Ingress它是通过headless service的集群内FQDN获取到它后端所有的Pod资源的IP,因为headless Service没有ClusterIP,它的域名对应的IP为PodIP。

Ingress获取PodIP后,在立刻将其写入到ingress-nginx的配置文件中,
并触发nginx重读配置文件。实现动态更新upstream。

另外,外部LB可以直接跳过Service,直接访问到nginx,这需要将nginx这个Pod作为共享宿主机的网络名称空间才能实现,这时就需要借助于daemonSet控制器来控制着nginx这种七层反代Pod仅允许在指定节点上,并且每个节点上仅运行一个nginx Pod。

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_02

k8s ingress 变慢 k8s的ingress到底是什么_Pod_03

具体实验

实验环境和之前的博客是一样的。

k8s ingress 变慢 k8s的ingress到底是什么_nginx_04


k8s ingress 变慢 k8s的ingress到底是什么_Pod_05


1.

k8s ingress 变慢 k8s的ingress到底是什么_IP_06

k8s ingress 变慢 k8s的ingress到底是什么_IP_07

2.我是把ingress-controller镜像下载在本地的harbor仓库中,让集群中的节点去harbor仓库中去拿。

k8s ingress 变慢 k8s的ingress到底是什么_IP_08

k8s ingress 变慢 k8s的ingress到底是什么_IP_09


拿到yaml文件

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_10

编辑此文件,把镜像的位置换成本地仓库中镜像的位置

k8s ingress 变慢 k8s的ingress到底是什么_Pod_11

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_12

k8s ingress 变慢 k8s的ingress到底是什么_IP_13

k8s ingress 变慢 k8s的ingress到底是什么_Pod_14

k8s ingress 变慢 k8s的ingress到底是什么_Pod_15

k8s ingress 变慢 k8s的ingress到底是什么_Pod_16

查看日志,发现service缺少

k8s ingress 变慢 k8s的ingress到底是什么_IP_17

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_18


应用刚才wget的service文件

k8s ingress 变慢 k8s的ingress到底是什么_Pod_19

k8s ingress 变慢 k8s的ingress到底是什么_nginx_20

k8s ingress 变慢 k8s的ingress到底是什么_nginx_21


查看信息

k8s ingress 变慢 k8s的ingress到底是什么_IP_22

k8s ingress 变慢 k8s的ingress到底是什么_IP_23

k8s ingress 变慢 k8s的ingress到底是什么_Pod_24

直接指定后端的服务名称

k8s ingress 变慢 k8s的ingress到底是什么_Pod_25

创建ingress服务

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_26

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_27

service.yaml文件

k8s ingress 变慢 k8s的ingress到底是什么_IP_28

k8s ingress 变慢 k8s的ingress到底是什么_IP_29


3.

k8s ingress 变慢 k8s的ingress到底是什么_IP_30

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_31

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_32

k8s ingress 变慢 k8s的ingress到底是什么_IP_33

通过域名的形式来访问后端

k8s ingress 变慢 k8s的ingress到底是什么_nginx_34

k8s ingress 变慢 k8s的ingress到底是什么_IP_35

k8s ingress 变慢 k8s的ingress到底是什么_nginx_36

k8s ingress 变慢 k8s的ingress到底是什么_Pod_37

k8s ingress 变慢 k8s的ingress到底是什么_Pod_38


在真机中添加ser4的解析

k8s ingress 变慢 k8s的ingress到底是什么_IP_39

发现实现负载均衡

k8s ingress 变慢 k8s的ingress到底是什么_Pod_40

k8s ingress 变慢 k8s的ingress到底是什么_nginx_41

通过不同的域名定义到不同的后端

1.

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_42

2.

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_43

k8s ingress 变慢 k8s的ingress到底是什么_nginx_44

k8s ingress 变慢 k8s的ingress到底是什么_nginx_45

k8s ingress 变慢 k8s的ingress到底是什么_Pod_46

k8s ingress 变慢 k8s的ingress到底是什么_Pod_47

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_48

访问www2.westos.org时访问到v1

k8s ingress 变慢 k8s的ingress到底是什么_Pod_49

访问www1.westos.org时访问到v2

k8s ingress 变慢 k8s的ingress到底是什么_k8s ingress 变慢_50

k8s ingress 变慢 k8s的ingress到底是什么_IP_51

k8s ingress 变慢 k8s的ingress到底是什么_Pod_52

测试访问同一域名,不同的path时,调度到不同的后端

k8s ingress 变慢 k8s的ingress到底是什么_IP_53


1.

k8s ingress 变慢 k8s的ingress到底是什么_IP_54

k8s ingress 变慢 k8s的ingress到底是什么_IP_55

k8s ingress 变慢 k8s的ingress到底是什么_Pod_56

k8s ingress 变慢 k8s的ingress到底是什么_Pod_57