什么是Ingress
当你在Kubernetes集群中运行多个应用程序时,每个应用程序都有自己的服务。为了让外部用户访问这些应用程序,就好像他们访问网站一样,我们需要一种方法来管理流量的分配和路由。这就是Ingress的作用。
想象一下,您的Kubernetes集群就像一个大型的公寓楼,每个公寓是一个应用程序。而Ingress就是大楼的大门,允许外部人员进入。大门上有一个保安,他会检查来访者的目的地,并根据他们的要求告诉他们去哪里。
Ingress就是这个保安,他知道应该将来自某个网址的请求引导到特定的应用程序。这可以通过不同的规则来实现,就像保安知道哪个公寓对应哪个房间号一样。这样,当人们访问不同的网址时,保安就会将他们引导到正确的应用程序。
要使保安工作,您需要在大门口放置一个标志,告诉保安如何引导来访者。在Kubernetes中,这个标志就是Ingress对象。而控制这个保安的是Ingress Controller,它就像是保安的老板,负责确保保安按照标志上的规则来引导人们。
总而言之,Ingress就是一种管理外部流量的方式,它允许您告诉集群如何将请求引导到正确的应用程序,就像大门保安将人们引导到正确的公寓一样。这使得外部用户能够方便地访问您在Kubernetes中运行的不同应用程序。
高可靠Ingress架构
高可靠架构首先解决的就是单点故障,通常在Kubernetes中采用多副本部署方式,同时由于Ingress作为集群流量接入口,建议采用一个Ingress服务独占一个Ingress节点的方式,以避免业务应用与Ingress服务发生资源抢占。架构图如下:
部署高可靠Ingress
环境介绍
代码语言:shell复制$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
cluster-control-plane Ready control-plane 4m5s v1.27.3
cluster-control-plane2 Ready control-plane 3m47s v1.27.3
cluster-control-plane3 Ready control-plane 2m59s v1.27.3
cluster-worker Ready <none> 2m50s v1.27.3
cluster-worker2 Ready <none> 2m52s v1.27.3
cluster-worker3 Ready <none> 2m54s v1.27.3
cluster-worker4 Ready <none> 2m52s v1.27.3
cluster-worker5 Ready <none> 2m54s v1.27.3
注:当前环境为kubernetes v1.27.3
版本选择
选择Ingress-nginx最新版本1.8.1,支持的kubernetes 1.27,1.26, 1.25, 1.24版本
Ingress-NGINX version | k8s supported version | Alpine Version | Nginx Version | Helm Chart Version | |
---|---|---|---|---|---|
|