-
一、Ingress-Controller组件介绍
Ingress基本概念
在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,其几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用来管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod。
Nginx Ingress Controller工作原理
为了使得Nginx Ingress资源正常工作,集群中必须要有个Nginx Ingress Controller来解析Nginx Ingress的转发规则。Nginx Ingress Controller收到请求,匹配Nginx Ingress转发规则转发到后端Service所对应的Pod,由Pod处理请求。Kubernetes中Service、Nginx Ingress与Nginx Ingress Controller有着以下关系:
配置ingress转发规则
-
Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
-
Nginx Ingress是反向代理规则,用来规定HTTP/HTTPS请求应该被转发到哪个Service所对应的Pod上。例如根据请求中不同的Host和URL路径,让请求落到不同Service所对应的Pod上。
-
Nginx Ingress Controller是Kubernetes集群中的一个组件,负责解析Nginx Ingress的反向代理规则。如果Nginx Ingress有增删改的变动,Nginx Ingress Controller会及时更新自己相应的转发规则,当Nginx Ingress Controller收到请求后就会根据这些规则将请求转发到对应Service的Pod上。
-
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: advertise-ingress namespace: default annotations: #URL重定向策略,[/sentinel(/|$)(.*)]将去掉sentinel这个前缀。 nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: rules: - host: ***.hmads.cn http: paths: - path: /sentinel(/|$)(.*) backend: service: name: sentinel port: number: 8858 pathType: ImplementationSpecific - path: /gateway(/|$)(.*) backend: service: name: gateway port: number: 8989 pathType: ImplementationSpecific --- #这里配置两个ingress规则,这个规则中不需要重定向 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nacos-ingress namespace: default spec: rules: - host: ***.hmads.cn http: paths: - path: /nacos backend: service: name: nacos-pro port: number: 8848 pathType: ImplementationSpecific - path: /xxl-job-admin backend: service: name: xxl-job-admin port: number: 8080 pathType: ImplementationSpecific
二、Ingress-Controller组件配置
安装ingress-controller组件
安装完成之后系统会自动生成一个传统型的SLB,将你的域名解析到这个SLB对应外网IP,这样流量会通过域名导入到SLB反向代理到后端配置的Service。(注意:每次重新安装组件都会导致SLB的外网IP的变更)
- 集群管理页面左侧运维管理菜单中找到组件管理,安装ingress-controller组件(依据你的流量配置cup与内存规格)
- 安装集群管理工具:kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
- 配置集群链接信息至家目录:.kube/config
- 配置ingress转发规则,将上面转发规则命名为ingress.yaml则执行命令如下
kubectl apply -f ingress.yaml