您可以通过以下 Annotation 注解配置 Ingress,以实现更丰富的负载均衡的能力。
注解使用方式
apiVersion:kind: Ingressmetadata:annotations:kubernetes.io/ingress.class: "qcloud"name: test........
Annotation 集合
kubernetes.io/ingress.class
说明:
配置 Ingress 类型。当前组件管理未配置该注解,或注解内容为 qcloud 的 Ingress 资源。
使用示例:
kubernetes.io/ingress.class: "qcloud"
kubernetes.io/ingress.qcloud-loadbalance-id
说明:
只读注解,组件提供当前 Ingress 引用的负载均衡 LoadBalanceId。
使用示例:
kubernetes.io/ingress.qcloud-loadbalance-id: "lb-3imskkfe"
ingress.cloud.tencent.com/loadbalance-nat-ipv6
说明:
只读注解,当用户配置或申请的为 NAT IPv6负载均衡时,提供 IPv6地址。
ingress.cloud.tencent.com/loadbalance-ipv6
说明:
只读注解,当用户配置或申请的为 FullStack IPv6负载均衡时,提供 IPv6地址。
kubernetes.io/ingress.internetChargeType
说明:
负载均衡的付费类型,当前仅在创建时支持配置,创建后不支持修改付费类型,创建后修改本注解无效。
指定创建负载均衡时,负载均衡的付费类型。请配合
kubernetes.io/ingress.internetMaxBandwidthOut
注解一起使用。 可选值:
TRAFFIC_POSTPAID_BY_HOUR 按流量按小时后计费。
BANDWIDTH_POSTPAID_BY_HOUR 按带宽按小时后计费。
使用示例:
kubernetes.io/ingress.internetChargeType: "TRAFFIC_POSTPAID_BY_HOUR"
kubernetes.io/ingress.internetMaxBandwidthOut
说明:
CLB 带宽设置,当前仅在创建时支持配置,创建后不支持修改带宽,创建后修改本注解无效。
指定创建负载均衡时,负载均衡的最大出带宽,仅对公网属性的 LB 生效。需配合
kubernetes.io/ingress.internetChargeType
注解一起使用。可选值:
范围支持1到2048,单位 Mbps。
使用示例:
kubernetes.io/ingress.internetMaxBandwidthOut: "2048"
kubernetes.io/ingress.extensiveParameters
使用示例:
创建 NAT64 IPv6 实例:
kubernetes.io/ingress.extensiveParameters: '{"AddressIPVersion":"IPV6"}'
创建 IPv6 实例:(
SubnetId
必填,而且需要分配IPv6网段。MixIpTarget
可以提供混绑后端IPv4的能力,当您的后端不是IPv6时请添加该配置)
kubernetes.io/ingress.extensiveParameters: '{"AddressIPVersion":"IPv6FullChain","SubnetId": "subnet-fqduxxxx"}'
kubernetes.io/ingress.extensiveParameters: '{"AddressIPVersion":"IPv6FullChain","SubnetId": "subnet-fqduxxxx","MixIpTarget":true}'
购买电信负载均衡:
kubernetes.io/ingress.extensiveParameters: '{"VipIsp":"CTCC"}'
指定可用区创建:
kubernetes.io/ingress.extensiveParameters: '{"ZoneId":"ap-guangzhou-1"}'
创建时自定义 CLB 名字:
kubernetes.io/ingress.extensiveParameters: '{"LoadBalancerName":"my_custom_lb_name"}'
kubernetes.io/ingress.subnetId
说明:
指定创建内网类型的负载均衡,并指定负载均衡所属子网。
使用示例:
kubernetes.io/ingress.subnetId: "subnet-3swgntkk"
kubernetes.io/ingress.existLbId
说明:
指定使用已有负载均衡作为接入层入口资源。
注意:
使用已有负载均衡时,需要保证其不包含其他监听器。
使用示例:
kubernetes.io/ingress.existLbId: "lb-342wppll"
kubernetes.io/ingress.rule-mix
kubernetes.io/ingress.http-rules
kubernetes.io/ingress.https-rules
说明:
支持配置混合协议,支持转发路径同时在 HTTP 和 HTTPS 上进行转发。支持手动配置重定向规则。
ingress.cloud.tencent.com/direct-access
说明:
支持七层直连用户负载均衡。需要注意在各种不同的网络下,直连接入的服务依赖。
ingress.cloud.tencent.com/tke-service-config
说明:
通过 tke-service-config 配置负载均衡相关配置,包括监听器、转发规则等。
使用示例:
ingress.cloud.tencent.com/tke-service-config: "nginx-config"
,详情可参见 Ingress 使用 TkeServiceConfig 配置 CLB。
ingress.cloud.tencent.com/tke-service-config-auto
说明:
通过该注解可自动创建 TkeServiceConfig 资源,并提供配置的模板,用户可以按需进行配置。
使用示例:
ingress.cloud.tencent.com/rewrite-support
说明:
可以配合
kubernetes.io/ingress.http-rules
、kubernetes.io/ingress.https-rules
实现手动重定向能力。可以配合
ingress.cloud.tencent.com/auto-rewrite
实现自动重定向能力。使用示例:
ingress.cloud.tencent.com/rewrite-support: "true"
ingress.cloud.tencent.com/auto-rewrite
说明:
为 HTTP 端口提供自动重定向能力,所有在 HTTPS 端口声明的转发规则都会创建对应的重定向规则。需要配合
ingress.cloud.tencent.com/rewrite-support
注解开启重定向的管理能力。 使用示例:
ingress.cloud.tencent.com/auto-rewrite: "true"
ingress.cloud.tencent.com/cross-region-id
说明:
Ingress 跨域绑定功能,指定需要从哪个地域接入。需要和
kubernetes.io/ingress.existLbId
或ingress.cloud.tencent.com/cross-vpc-id
配合使用。 使用示例:
创建异地接入的负载均衡:
ingress.cloud.tencent.com/cross-region-id: "ap-guangzhou"
ingress.cloud.tencent.com/cross-vpc-id: "vpc-646vhcjj"
选择已有负载均衡进行异地接入:
ingress.cloud.tencent.com/cross-region-id: "ap-guangzhou"
kubernetes.io/ingress.existLbId: "lb-342wppll"
ingress.cloud.tencent.com/cross-vpc-id
说明:
Ingress 跨域绑定功能,指定需要接入的 VPC。可以和
ingress.cloud.tencent.com/cross-region-id
注解配合指定其他地域 VPC。注意:
适用于 TKE 创建并管理的负载均衡,对使用已有负载均衡的场景该注解无效。
使用示例:
创建异地接入的负载均衡:
ingress.cloud.tencent.com/cross-region-id: "ap-guangzhou"
ingress.cloud.tencent.com/cross-vpc-id: "vpc-646vhcjj"
ingress.cloud.tencent.com/enable-grace-shutdown
说明:
支持 CLB 直连模式的优雅停机。Pod 被删除,此时 Pod 里有 DeletionTimestamp,且状态置为 Terminating。此时调整 CLB 到该 Pod 的权重为 0。
ingress.cloud.tencent.com/enable-grace-shutdown-tkex
说明:
支持 CLB 直连模式的优雅退出。Endpoint 对象中 endpoints 是否 not-ready,将 not-ready 的 CLB 后端权重置为 0。
ingress.cloud.tencent.com/security-groups
说明:
通过该 Annotation 可以为 CLB 类型的 Ingress 绑定安全组,单个 CLB 最多可绑定5个安全组。
注意:
请查看 CLB 使用安全组的使用限制。
通常需要配合安全组默认放通的能力,CLB 和 CVM 之间默认放通,来自 CLB 的流量只需通过 CLB 上安全组的校验。对应 Annotation 为:
ingress.cloud.tencent.com/pass-to-target
使用示例:
ingress.cloud.tencent.com/security-groups: "sg-xxxxxx,sg-xxxxxx"
ingress.cloud.tencent.com/pass-to-target
说明:
通过该 Annotation 可以为 CLB 类型的 Ingress 配置安全组默认放通的能力,CLB 和 CVM 之间默认放通,来自 CLB 的流量只需通过 CLB 上安全组的校验。
注意:
请查看 CLB 使用安全组的使用限制。
通常需要配合绑定安全组的能力。对应 Annotation 为:
ingress.cloud.tencent.com/security-groups
使用示例:
ingress.cloud.tencent.com/pass-to-target: "true"
ingress.cloud.tencent.com/listen-ports
说明:
自定义 Ingress 的监听端口。默认情况下,HTTP 为 80,HTTPS 为 443,通过该 Annotation 可以自定义 Ingress 对应的 CLB 所监听的端口,支持分别为 HTTP 和 HTTPS 协议自定义一个或多个端口。
注意:
如需使用自动重定向 (
ingress.cloud.tencent.com/auto-rewrite: "true"
),仅在 HTTP:80 以及 HTTPS:443 均存在时生效。使用示例:
ingress.cloud.tencent.com/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}, {"HTTP": 8080}, {"HTTPS": 8443}]'