开发者社区 > 云原生 > Serverless > 正文

Serverless Kubernetes 集群  负载均衡管理  负载均衡




您可以使用阿里云负载均衡来访问服务。

通过命令行操作

  1. 通过命令行工具创建一个 Nginx 应用。root@master # kubectl run nginx --image=registry.aliyuncs.com/acs/netdia:latestroot@master # kubectl get poNAME                                   READY     STATUS    RESTARTS   AGEnginx-2721357637-dvwq3                 1/1       Running   1          6s
  2. 为 Nginx 应用创建阿里云负载均衡服务,指定 type=LoadBalancer 来向外网用户暴露 Nginx 服务。root@master # kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancerroot@master # kubectl get svcNAME                  CLUSTER-IP      EXTERNAL-IP      PORT(S)                        AGEnginx                 172.19.10.209   101.37.192.20   80:31891/TCP                   4s
  3. 在浏览器中访问 http://101.37.192.20,来访问您的 Nginx 服务。


更多信息


阿里云负载均衡还支持丰富的配置参数,包含健康检查、收费类型、负载均衡类型等参数。详细信息参见 负载均衡配置参数表

注释


阿里云可以通过注释的形式支持丰富的负载均衡功能。

使用已有的内网 SLB


需要指定两个 annotation。注意修改成您自己的 Loadbalancer-id。apiVersion: v1kind: Servicemetadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranetservice.beta.kubernetes.io/alicloud-loadbalancer-id: your-loadbalancer-idlabels:run: nginxname: nginxnamespace: defaultspec:ports:- name: webport: 80protocol: TCPtargetPort: 80selector:run: nginxsessionAffinity: Nonetype: LoadBalancer
然后保存为 slb.svc 后,执行 kubectl apply -f slb.svc。

创建 HTTPS 类型的 Loadbalancer


先在阿里云控制台上创建一个证书并记录 cert-id, 然后使用如下 annotation 创建一个 HTTPS 类型的 SLB。apiVersion: v1kind: Servicemetadata:annotations:service.beta.kubernetes.io/alicloud-loadbalancer-cert-id: your-cert-idservice.beta.kubernetes.io/alicloud-loadbalancer-protocol-port: "https:443"labels:run: nginxname: nginxnamespace: defaultspec:ports:- name: webport: 443protocol: TCPtargetPort: 443selector:run: nginxsessionAffinity: Nonetype: LoadBalancer
[tr=transparent] [/url]说明[tr=transparent]注释的内容是区分大小写的。
[tr=rgb(51, 205, 229)][td]注释
描述默认值service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port多个值之间由逗号分隔,比如:https:443,http:80无service.beta.kubernetes.io/alicloud-loadbalancer-address-type取值可以是 internet 或者 intranetinternetservice.beta.kubernetes.io/alicloud-loadbalancer-slb-network-type负载均衡的网络类型,取值可以是 classic 或者 vpcclassicservice.beta.kubernetes.io/alicloud-loadbalancer-charge-type取值可以是 paybytraffic 或者 paybybandwidthpaybybandwidthservice.beta.kubernetes.io/alicloud-loadbalancer-id负载均衡实例的 ID。通过 loadbalancer-id 指定您已有的 SLB,已有 listener 会被覆盖, 删除 service 时该 SLB 不会被删除。无service.beta.kubernetes.io/alicloud-loadbalancer-backend-label通过 label 指定 SLB 后端挂哪些节点。无service.beta.kubernetes.io/alicloud-loadbalancer-region负载均衡所在的地域无service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth负载均衡的带宽50service.beta.kubernetes.io/alicloud-loadbalancer-cert-id阿里云上的认证 ID。您需要先上传证书“”service.beta.kubernetes.io/alicloud-loadbalancer-health-check-flag取值是 on 或者 off默认为 off。TCP 不需要改参数。因为 TCP 默认打开健康检查,用户不可设置。service.beta.kubernetes.io/alicloud-loadbalancer-health-check-type参见[url=https://help.aliyun.com/document_detail/27594.html#slb_api_CreateLoadBalancerTCPListener__table_u2n_zrk_cz]HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-health-check-uri参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-port参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-healthy-threshold参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-unhealthy-threshold参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-health-check-interval参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-timeout参见 HealthCheckservice.beta.kubernetes.io/alicloud-loadbalancer-health-check-timeout参见 HealthCheck

展开
收起
青蛙跳 2018-08-31 22:38:07 1386 0
0 条回答
写回答
取消 提交回答

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载

    相关镜像