全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

通过金山云独享型负载均衡访问服务

最近更新时间:2026-01-05 14:58:07

前提条件

容器集群中安装了cloud-controller-manager或者lb-controller

注意事项

部署cloud-controller-manager或者lb-controller,会自动在集群中创建名为 applicationloadbalancers.network.ksyun.com 的自定义资源,service相关的负载均衡信息会记录在其中,请勿删除与修改此自定义资源,可能会导致组件异常,service相关的负载均衡也可能会发生异常。

指定负载均衡限制

  • Kubernetes通过Service自动创建的LB不能复用(会导致LB被意外删除)。只能复用手动在控制台(或调用OpenAPI)创建的LB。

  • 指定的负载均衡需要与当前集群处于同一vpc内。

  • 请勿提前为service创建监听器,为了防止多个service复用同一负载均衡时指定相同的端口,发生端口冲突的问题,组件发现当前监听器非自身创建时,会进行报错处理。

监听器与服务器组管理限制

  • 组件自动创建的服务器组不支持被其他监听器绑定。

  • 组件管理的监听器仅支持绑定由组件自动创建的服务器组,若手动更换为其他服务器组,系统将自动恢复为组件原始的服务器组。

service生命周期管理

  1. 不支持公网负载均衡与内网负载均衡之前的切换

  2. 不支持自动创建的负载均衡与使用已有负载均衡之间的切换

  3. 使用已有负载均衡时,不支持切换其他已有负载均衡

  4. 不支持独享型与共享型负载均衡之间的切换

若存在切换需求,可以将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

通过负载均衡向私网暴露服务

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-type

指定负载均衡的网络类型 取值如下:

public:通过公网访问,对应创建的负载均衡为公网类型

internal:通过内网访问,对应创建的负载均衡为内网类型

默认值:public

service.beta.kubernetes.io/ksc-loadbalancer-subnet-id

创建内网负载均衡时使用的终端子网id,网络类型为internal时必填

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.beta.kubernetes.io/ksc-application-loadbalancer-id

指定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

配置负载均衡规格

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-version

负载均衡功能版本 取值如下:

standard:标准版

medium:中阶版

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.beta.kubernetes.io/ksc-loadbalancer-bandwidth

公网模式下指定弹性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

创建HTTP类型的监听器

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-protocol-port

创建指定协议的监听器,注释的格式是“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

创建HTTPS类型的监听器

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-protocol-port

创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用,分隔

注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器

service.beta.kubernetes.io/ksc-loadbalancer-cert-id

指定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

创建TCPSSL类型的监听器

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-protocol-port

创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用,分隔

注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器

service.beta.kubernetes.io/ksc-loadbalancer-tcpssl-cert-id

指定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

配置TCPSSL类型的监听器

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-protocol-port

创建指定协议的监听器,注释的格式是“PROTOCOL:PORT”(PORT必须和spec:ports中的port一致)。指定多个端口的协议时,使用,分隔

注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器

service.beta.kubernetes.io/ksc-loadbalancer-tcpssl-cert-id

指定tcpssl监听器使用的证书

注:service annotation配置证书id的情况下,请勿在负载均衡控制台手动修改证书id,会被此处覆盖

service.beta.kubernetes.io/ksc-loadbalancer-ca-enabled

是否启用双向认证,可选值:

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直通功能

注释

功能

service.beta.kubernetes.io/ksc-loadbalancer-mode

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

注释列表

注释

描述

默认值

service.beta.kubernetes.io/ksc-application-loadbalancer-id

独享型负载均衡实例的 ID。通过 loadbalancer-id 指定您已有的 SLB,请勿提前创建监听器,删除 service 时该 SLB 不会被删除

-

service.beta.kubernetes.io/ksc-loadbalancer-version

负载均衡功能版本

standard

service.beta.kubernetes.io/ksc-loadbalancer-type

指定独享型负载均衡实例的类型

public

service.beta.kubernetes.io/ksc-loadbalancer-subnet-id

创建内网负载均衡时,需要指定终端子网ID

-

service.beta.kubernetes.io/ksc-loadbalancer-bandwidth

外网IP的带宽,参考创建弹性IP OpenAPI中的BandWidth字段

1

service.beta.kubernetes.io/ksc-loadbalancer-charge-type

外网IP的计费方式,参考创建弹性IP OpenAPI中ChargeType字段

会根据用户已有的计费方式创建,优先选择后付费的方式PostPaidByDay

service.beta.kubernetes.io/ksc-loadbalancer-purchase-time

外网IP的购买时长,参考创建弹性IP OpenAPI中PurchaseTime字段

-

service.beta.kubernetes.io/ksc-loadbalancer-protocol-port

指定HTTP、HTTPS等协议。多个值之间由逗号分隔,比如:HTTPS:443,HTTP:80。注:监听器已经创建完成时,配置此注释,会删除之前监听器,创建预期协议的监听器

-

service.beta.kubernetes.io/ksc-loadbalancer-idle-timeout

监听器空闲时间,参见创建监听器OpenAPI中的IdleTimeout字段

-

service.beta.kubernetes.io/ksc-loadbalancer-cert-id

协议为HTTPS时,指定证书ID。参考创建监听器OpenAPI中的CertificateId字段

-

service.beta.kubernetes.io/ksc-loadbalancer-enable-http2

是否启用HTTP/2。参考创建监听器OpenAPI中的EnableHttp2字段

-

service.beta.kubernetes.io/ksc-loadbalancer-tls-cipher-policy

TLS安全策略。参考创建监听器OpenAPI中的TlsCipherPolicy字段

-

service.beta.kubernetes.io/ksc-loadbalancer-tcpssl-cert-id

协议为TCPSSL时,指定证书ID。参考创建监听器OpenAPI中的CertificateId字段

-

service.beta.kubernetes.io/ksc-loadbalancer-ca-enabled

是否开启双向认证。参考创建监听器OpenAPI中的CaEnabled字段

false

service.beta.kubernetes.io/ksc-loadbalancer-ca-certificate-id

双向认证使用的客户端证书。参考创建监听器OpenAPI中的CaCertificateId字段

-

service.beta.kubernetes.io/ksc-loadbalancer-mode

开启直通pod模式,缺省为NodePort模式

-

service.beta.kubernetes.io/ksc-loadbalancer-method

监听器的转发方式。参考创建服务器组OpenAPI中的Method字段

RoundRobin

service.beta.kubernetes.io/ksc-loadbalancer-session-state

是否开启会话保持。参考创建服务器组OpenAPI中的SessionState字段

stop

service.beta.kubernetes.io/ksc-loadbalancer-session-persistence-period

会话保持超时时间。参考创建服务器组OpenAPI中的SessionPersistencePeriod字段

-

service.beta.kubernetes.io/ksc-loadbalancer-cookie-type

协议为HTTP时,指定cookie类型。参考创建服务器组OpenAPI中的CookieType字段

-

service.beta.kubernetes.io/ksc-loadbalancer-cookie-name

协议为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字段

-

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈