通過在Service的Yaml文件中配置注解Annotation,您可以對天翼云負載均衡、監聽轉發等進行配置,本文介紹LoadBalancer類型Service支持配置的Annotation。
注解說明
| 注解名稱 | 描述 | 示例 | 支持的CCM版本 |
|---|---|---|---|
ervice.beta.kubernetes.io/ctyun-loadbalancer-address-type | 指定新建負載均衡的公網私網類型,取值:
| internet | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-bandwidth | 計費類型為“bandwidth”時,可指定帶寬的大小,值為數字類型,默認為1 Mbps | 5 | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-charge-type | 指定創建公網負載均衡時,公網的計費類型,取值:
| traffic | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-cycle-count | 指定負載均衡的計費周期,值為數字類型,表示購買月數,默認為1個月 | 1 | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-eip-id | 指定新建公網負載均衡時,可指定綁定已有的彈性IP,取值為彈性IP的ID,可在網絡控制臺的彈性IP詳情頁面查看ID |
| v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-enable-ipv6 | 指定新建負載均衡時,可指定開啟負載均衡的ipv6 | "true" | v1.1.1及以上
|
service.beta.kubernetes.io/ctyun-loadbalancer-enable-listener-nat64 | 指定支持ipv6的負載均衡時,可指定開啟監聽器的nat64,支持負載均衡將ipv6流量轉發到ipv4的后端 | "true" | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-id | 指定已有負載均衡,取值為負載均衡實例的ID。刪除service時該 ELB不會被刪除 |
| v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-ipv6-address | 指定新建支持ipv6的負載均衡時,可指定負載均衡的ipv6地址(該地址為負載均衡所在子網的ipv6地址段中未被分配的ip),未指定則由系統隨機分配 |
| v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-ipv6-bandwidth-id | 指定新建支持ipv6的公網負載均衡時,需指定IPv6帶寬ID,可在網絡控制臺的IPv6帶寬詳情頁面查看ID。如果沒有IPv6帶寬,請先創建一個 |
| v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-override-listeners | 指定已有負載均衡時,可指定是否強制覆蓋已有監聽 | "true" | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-project-id | 指定新建負載均衡所屬的企業項目,取值為企業項目ID,可在IAM控制臺中企業項目詳情查看ID | 0 | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-protocol-port | 指定負載均衡監聽HTTP協議或HTTPS協議,可指定多個監聽,多個監聽之間以逗號“,”分割 | https:443,http:80 | v1.1.1及以上 |
service.beta.kubernetes.io/ctyun-loadbalancer-spec | 指定新建負載均衡的規格,如elb.s2.small | elb.s2.small | v1.1.1及以上
|
service.beta.kubernetes.io/ctyun-loadbalancer-ssl-cert | 指定SSL證書,取值為SSL證書ID,可在負載均衡控制臺的證書管理頁面查看證書ID。 僅監聽協議為HTTPS協議時需要指定 |
| v1.1.1及以上
|
service.beta.kubernetes.io/ctyun-loadbalancer-xforwardedfor | 指定負載均衡監聽器附加X-Forwarded-For頭字段,通過開啟該參數,后端服務可獲取客戶端源IP。取值為“true”或“false” 僅支持監聽協議為HTTP和HTTPS協議 | "true" | v1.1.1及以上
|
示例
使用已有負載均衡。
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