最近更新时间:2026-01-05 14:58:07
容器集群中安装了cloud-controller-manager或者lb-controller
版本需要 >=1.38,默认会创建独享型负载均衡
版本<1.38,默认会创建共享型负载均衡,使用方式,参照通过金山云负载均衡访问服务
部署cloud-controller-manager或者lb-controller,会自动在集群中创建名为 applicationloadbalancers.network.ksyun.com 的自定义资源,service相关的负载均衡信息会记录在其中,请勿删除与修改此自定义资源,可能会导致组件异常,service相关的负载均衡也可能会发生异常。
指定负载均衡限制
Kubernetes通过Service自动创建的LB不能复用(会导致LB被意外删除)。只能复用手动在控制台(或调用OpenAPI)创建的LB。
指定的负载均衡需要与当前集群处于同一vpc内。
请勿提前为service创建监听器,为了防止多个service复用同一负载均衡时指定相同的端口,发生端口冲突的问题,组件发现当前监听器非自身创建时,会进行报错处理。
监听器与服务器组管理限制
组件自动创建的服务器组不支持被其他监听器绑定。
组件管理的监听器仅支持绑定由组件自动创建的服务器组,若手动更换为其他服务器组,系统将自动恢复为组件原始的服务器组。
service生命周期管理
不支持公网负载均衡与内网负载均衡之前的切换
不支持自动创建的负载均衡与使用已有负载均衡之间的切换
使用已有负载均衡时,不支持切换其他已有负载均衡
不支持独享型与共享型负载均衡之间的切换
若存在切换需求,可以将service访问方式切换为NodePort或者ClusterIP,再配置成需要的参数。
请勿在负载均衡控制台上手动修改由KCE管理的负载均衡与配置,存在被Service配置覆盖的风险。
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
指定负载均衡的网络类型 取值如下:
默认值: | |
创建内网负载均衡时使用的终端子网id,网络类型为 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-type: "internal"
service.beta.kubernetes.io/ksc-loadbalancer-subnet-id: "your-Reserve-id"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer指定负载均衡时,请勿提前为service创建监听器,为了防止多个service复用同一负载均衡时指定相同的端口,发生端口冲突的问题。组件发现当前监听器非自身创建时,会进行报错处理。
注释 | 功能 |
指定service使用独享型负载均衡 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-application-loadbalancer-id: "your-lb-id"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
负载均衡功能版本 取值如下:
|
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-version: "standard"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
公网模式下指定弹性IP的带宽值 注:service annotation配置弹性IP带宽的情况下,请勿在弹性IP控制台手动修改带宽值,会被此处覆盖 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-bandwidth: "5"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用 注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-protocol-port: "HTTP:80"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用 注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器 | |
指定https监听器使用的证书 注:service annotation配置证书id的情况下,请勿在负载均衡控制台手动修改证书id,会被此处覆盖 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-protocol-port: "HTTPS:443"
service.beta.kubernetes.io/ksc-loadbalancer-cert-id: "your-cert-id"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用 注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器 | |
指定tcpssl监听器使用的证书 注:service annotation配置证书id的情况下,请勿在负载均衡控制台手动修改证书id,会被此处覆盖 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-protocol-port: "TCLSSL:443"
service.beta.kubernetes.io/ksc-loadbalancer-tcpssl-cert-id: "your-cert-id"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用 注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器 | |
指定tcpssl监听器使用的证书 注:service annotation配置证书id的情况下,请勿在负载均衡控制台手动修改证书id,会被此处覆盖 | |
是否启用双向认证,可选值: true:开启 false:关闭 | |
service.beta.kubernetes.io/ksc-loadbalancer-ca-certificate-id | 客户端证书,开启双向认证时必填 |
service.beta.kubernetes.io/ksc-loadbalancer-tls-cipher-policy | TLS安全策略 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-protocol-port: "TCLSSL:443"
service.beta.kubernetes.io/ksc-loadbalancer-tcpssl-cert-id: "your-cert-id"
service.beta.kubernetes.io/ksc-loadbalancer-ca-enabled: "true"
service.beta.kubernetes.io/ksc-loadbalancer-ca-certificate-id: "client-cert-id"
service.beta.kubernetes.io/ksc-loadbalancer-tls-cipher-policy: "TlsCipherPolicy1.0"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app: nginx
type: LoadBalancer注释 | 功能 |
pod直通模式下,负载均衡直接将流量转发至pod,无需kube-proxy中转 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/ksc-loadbalancer-mode: "pod"
labels:
app: nginx
name: simple-svc
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer注释 | 描述 | 默认值 |
独享型负载均衡实例的 ID。通过 loadbalancer-id 指定您已有的 SLB,请勿提前创建监听器,删除 service 时该 SLB 不会被删除 | - | |
负载均衡功能版本 | standard | |
指定独享型负载均衡实例的类型 | public | |
创建内网负载均衡时,需要指定终端子网ID | - | |
外网IP的带宽,参考创建弹性IP OpenAPI中的BandWidth字段 | 1 | |
外网IP的计费方式,参考创建弹性IP OpenAPI中ChargeType字段 | 会根据用户已有的计费方式创建,优先选择后付费的方式PostPaidByDay | |
外网IP的购买时长,参考创建弹性IP OpenAPI中PurchaseTime字段 | - | |
指定HTTP、HTTPS等协议。多个值之间由逗号分隔,比如:HTTPS:443,HTTP:80。注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器 | - | |
监听器空闲时间,参见创建监听器OpenAPI中的IdleTimeout字段 | - | |
协议为HTTPS时,指定证书ID。参考创建监听器OpenAPI中的CertificateId字段 | - | |
是否启用HTTP/2。参考创建监听器OpenAPI中的EnableHttp2字段 | - | |
service.beta.kubernetes.io/ksc-loadbalancer-tls-cipher-policy | TLS安全策略。参考创建监听器OpenAPI中的TlsCipherPolicy字段 | - |
协议为TCPSSL时,指定证书ID。参考创建监听器OpenAPI中的CertificateId字段 | - | |
是否开启双向认证。参考创建监听器OpenAPI中的CaEnabled字段 | false | |
service.beta.kubernetes.io/ksc-loadbalancer-ca-certificate-id | 双向认证使用的客户端证书。参考创建监听器OpenAPI中的CaCertificateId字段 | - |
开启直通pod模式,缺省为NodePort模式 | - | |
监听器的转发方式。参考创建服务器组OpenAPI中的Method字段 | RoundRobin | |
是否开启会话保持。参考创建服务器组OpenAPI中的SessionState字段 | stop | |
service.beta.kubernetes.io/ksc-loadbalancer-session-persistence-period | 会话保持超时时间。参考创建服务器组OpenAPI中的SessionPersistencePeriod字段 | - |
协议为HTTP时,指定cookie类型。参考创建服务器组OpenAPI中的CookieType字段 | - | |
协议为HTTP时,指定cookie名字。参考创建服务器组OpenAPI中的CookieName字段 | - | |
service.beta.kubernetes.io/ksc-loadbalancer-upstream-keep-alive | 后端长连接配置。参考创建服务器组OpenAPI中的UpstreamKeepalive字段 | shortconnection |
service.beta.kubernetes.io/ksc-loadbalancer-slow-start-enabled | 是否开启慢启动。参考创建服务器组OpenAPI中的SlowStartEnabled字段 | stop |
service.beta.kubernetes.io/ksc-loadbalancer-slow-start-duration | 慢启动持续时间。参考创建服务器组OpenAPI中的SlowStartDuration字段 | - |
纯净模式
