通过CCE使用K8S_Ingress
更新时间:2025-05-29
Ingress是Kubernetes提供的一种7层流量接入方式,它通过连接外部负载均衡与容器内部服务的方式对流量进行管理。相比LoadBalancer Service,Ingress可以简化主机对外开放端口的管理,同时利用外部负载的能力提供更完善的路由和安全规则,详情参考官网说明:Kubernetes Ingress。
Ingress主要由两部分组成:
- Ingress资源对象:提供Ingress Kubernetes对象,能够通过yaml进行创建和更新,将服务与域名对应起来。
- Ingress Controller:部署在集群中的公共组件,将Ingress资源对象的配置转化成外部负载均衡的配置,对负载均衡器进行管理和更新。
CCE提供了基于百度智能云负载均衡服务的CCE Ingress Controller的实现,用户在使用Ingress的同时将会联动创建和配置管理百度智能云负载均衡(应用型BLB)和弹性公网IP(EIP),从而实现对集群外部流量的接入和管理。Ingress的使用方式与原生的Kubernetes保持一致,用户可以通过百度智能云控制台或者yaml创建和管理Ingress。
前提条件
- 集群已安装CCE Ingress Controller组件,更多信息请见CCE Ingress Controller 说明。
操作步骤
- 登录百度智能云官网,并进入管理控制台。
- 选择“产品导览>容器>容器引擎”,单击进入容器引擎管理控制台。
- 单击左侧导航栏中的“集群管理>集群列表”。
- 在集群列表页面中,单击目标集群名称进入集群管理页面。
- 在集群管理页面单击“网络>路由”进入路由页面。
- 单击“新建Ingress”按钮进入新建Ingress页面,进行基本信息配置:
配置项 | 必选/可选 | 配置说明 |
---|---|---|
Ingress名称 | 必选 | 指定Ingress名称。 |
命名空间 | 必选 | 选择Ingress所在的命名空间。Ingress只能向所在命名空间的Service转发流量。 |
负载均衡器 | 必选 | 当前选择“应用性BLB”,系统将为Ingress创建或绑定应用性BLB实例。 |
访问类型 | 必选 | 指定Service的访问类型,支持公网和内网。 |
指定BLB | 必选 | 可选新建或指定已有的应用型BLB。注意:一个BLB只能用于一个Ingress,不能复用。 |
指定EIP | 必选 | 仅访问类型为公网时支持配置,可选新建或指定已有的EIP。注意:一个EIP只能用于一个Ingress,不能复用。 |
指定VPC子网 | 必选 | 选择当前Ingress关联创建的BLB所在的子网。如果不是新建BLB而是指定了已有BLB,该选项不会生效。 |
- 下一步进行转发规则配置。
配置项 | 必选/可选 | 配置说明 |
---|---|---|
更新策略 | 可选 | 指定开启BLB配置全量更新,更新Ingress时默认仅会更新对应BLB监听器的转发规则配置,开启后会同步更新BLB全部配置(如监听器、证书、健康检查、安全组)和绑定的EIP配置(如公网带宽)。 |
监听端口 | 必选 | 默认选择HTTP:80,支持勾选HTTPS:443。 |
证书 | 必选 | 仅监听端口勾选了HTTPS:443时支持配置,为HTTPS监听器绑定证书。 |
扩展域名 | 可选 | 为HTTPS监听器添加多条扩展域名。 |
转发规则 | 必选 | 支持配置多条转发规则。 |
- 最后进行高级配置。
配置项 | 必选/可选 | 配置说明 |
---|---|---|
超时时间 | 必选 | 配置Ingress等待后端服务器响应的超时时间。 |
HTTP重定向 | 必选 | 是否打开HTTP重定向,将HTTP请求转发到HTTPS端口上。该选项仅在勾选HTTPS后需要配置。 |
标签(Labels) | 可选 | 为Ingress添加K8S标签。 |
注解(Annotations) | 可选 | 为Ingress添加K8S Annotations。CCE定义的Annotation请参考BLB Ingress Annotation说明。 |
- 单击“完成”按钮完成创建。
说明:
- 刚刚创建的Ingress,详情页和转发规则页都会显示“NotReady”,等待几分钟之后,Ingress完成配置,将会显示为“Ready”状态,此时Ingress已经可以使用。
Ingress使用示例
分别用以下yaml内容创建示例Deployment和Service资源:
Plain Text
1 apiVersion: apps/v1
2 kind: Deployment
3 metadata:
4 name: ingress-nginx-deployment
5 labels:
6 app: ingress-nginx
7 spec:
8 replicas: 2
9 selector:
10 matchLabels:
11 app: ingress-nginx
12 template:
13 metadata:
14 labels:
15 app: ingress-nginx
16 spec:
17 containers:
18 - name: nginx
19 image: hub.baidubce.com/cce/nginx-ingress
20 ports:
21 - containerPort: 80
22
23 ---
24 kind: Service
25 apiVersion: v1
26 metadata:
27 name: hello-service
28 spec:
29 selector:
30 app: ingress-nginx
31 type: NodePort
32 ports:
33 - protocol: TCP
34 port: 8000
35 targetPort: 80
36
37 ---
38 kind: Service
39 apiVersion: v1
40 metadata:
41 name: world-service
42 spec:
43 selector:
44 app: ingress-nginx
45 type: NodePort
46 ports:
47 - protocol: TCP
48 port: 9000
49 targetPort: 80
2.创建Ingress资源并配置以下转发规则:
- www.cce-ingress.com/hello/* -> hello-service:8000/hello/
- www.cce-ingress.com/world/* -> world-service:9000/world/
注意:
- Service对应后端服务必须支持转发策略的URI,如果要支持所有情况,需要设置为/*。
3.修改本地/etc/hosts,将www.cce-ingress.com指向EIP(例如:106.12.52.80):
4.访问测试: