通过在Service的Yaml文件中配置注解Annotation,您可以对天翼云负载均衡、监听转发等进行配置,本文介绍LoadBalancer类型Service支持配置的Annotation。
注解说明
注解名称 | 描述 | 示例 | 支持的CCM版本 |
---|---|---|---|
service.beta.kubernetes.io/ctyun-loadbalancer-address-type | 指定新建负载均衡的公网私网类型,取值: intranet:负载均衡地址类型为私网,intranet为默认值 internet:负载均衡地址类型为公网 | internet | v1.0.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-bandwidth | 计费类型为“bandwidth”时,可指定带宽的大小,值为数字类型,默认为1 Mbps | 5 | v1.0.5及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-charge-type | 指定创建公网负载均衡时,公网的计费类型,取值: bandwidth:按带宽计费 traffic:按流量计费,traffic为默认值 | traffic | v1.0.5及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-cycle-count | 指定负载均衡的计费周期,值为数字类型,表示购买月数,默认为1个月 | 1 | v1.0.5及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-eip-id | 指定新建公网负载均衡时,可指定绑定已有的弹性IP,取值为弹性IP的ID,可在网络控制台的弹性IP详情页面查看ID | v1.0.5及以上 | |
service.beta.kubernetes.io/ctyun-loadbalancer-enable-ipv6 | 指定新建负载均衡时,可指定开启负载均衡的ipv6 | "true" | v1.0.7及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-enable-listener-nat64 | 指定支持ipv6的负载均衡时,可指定开启监听器的nat64,支持负载均衡将ipv6流量转发到ipv4的后端 | "true" | v1.0.7及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-id | 指定已有负载均衡,取值为负载均衡实例的ID。删除service时该 ELB不会被删除 | v1.0.1及以上 | |
service.beta.kubernetes.io/ctyun-loadbalancer-ipv6-address | 指定新建支持ipv6的负载均衡时,可指定负载均衡的ipv6地址(该地址为负载均衡所在子网的ipv6地址段中未被分配的ip),未指定则由系统随机分配 | v1.0.7及以上 | |
service.beta.kubernetes.io/ctyun-loadbalancer-ipv6-bandwidth-id | 指定新建支持ipv6的公网负载均衡时,需指定IPv6带宽ID,可在网络控制台的IPv6带宽详情页面查看ID。如果没有IPv6带宽,请先创建一个 | v1.0.7及以上 | |
service.beta.kubernetes.io/ctyun-loadbalancer-override-listeners | 指定已有负载均衡时,可指定是否强制覆盖已有监听 | "true" | v1.0.7及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-project-id | 指定新建负载均衡所属的企业项目,取值为企业项目ID,可在IAM控制台中企业项目详情查看ID | 0 | v1.0.5及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-protocol-port | 指定负载均衡监听HTTP协议或HTTPS协议,可指定多个监听,多个监听之间以逗号“,”分割 | https:443,http:80 | v1.0.4及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-spec | 指定新建负载均衡的规格,如elb.s2.small | elb.s2.small | v1.0.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-ssl-cert | 指定SSL证书,取值为SSL证书ID,可在负载均衡控制台的证书管理页面查看证书ID。 仅监听协议为HTTPS协议时需要指定 | v1.0.4及以上 | |
service.beta.kubernetes.io/ctyun-loadbalancer-xforwardedfor | 指定负载均衡监听器附加X-Forwarded-For头字段,通过开启该参数,后端服务可获取客户端源IP。取值为“true”或“false” 仅支持监听协议为HTTP和HTTPS协议 | "true" | v1.0.4及以上 |
使用已有负载均衡
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-id: "${YOUR_LOADBALANCER_ID}" #负载均衡ELB实例的ID
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
创建私网负载均衡
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-spec: "elb.s2.smal" #新建负载均衡规格为标准型Ⅰ
service.beta.kubernetes.io/ctyun-loadbalancer-address-type: "intranet" #新建负载均衡为私网类型
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
新建公网负载均衡
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-spec: "elb.s2.smal" #新建负载均衡规格为标准型Ⅰ
service.beta.kubernetes.io/ctyun-loadbalancer-address-type: "internet" #新建负载均衡为公网类型
service.beta.kubernetes.io/ctyun-loadbalancer-charge-type: "bandwidth" #公网计费按带宽计费
service.beta.kubernetes.io/ctyun-loadbalancer-bandwidth: "5" #公网带宽大小为5Mbps
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
配置监听HTTP协议
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-id: "lb-***"
service.beta.kubernetes.io/ctyun-loadbalancer-protocol-port: "http:80" #监听HTTP的80端口
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
配置监听HTTPS协议
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/ctyun-loadbalancer-protocol-port: "https:443" #监听HTTPS的443端口
service.beta.kubernetes.io/ctyun-loadbalancer-ssl-cert: "${YOUR_CERT_ID}" #SSL证书ID
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 443
targetPort: 80
type: LoadBalancer
配置附加X-Forwarded-For请求头
kind: Service
apiVersion: v1
metadata:
name: nginx
annotations:
service.beta.kubernetes.io/ctyun-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/ctyun-loadbalancer-xforwardedfor: "true"
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer