Kubernetes 集群  通过负载均衡(Server Load Balancer)访问服务-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Kubernetes 集群  通过负载均衡(Server Load Balancer)访问服务

2018-08-17 20:02:39 2910 0
您可以使用阿里云负载均衡来访问服务。


     说明: 如果您的集群的cloud-controller-manager版本大于等于v1.9.3,对于指定已有SLB的时候,系统默认不再为该SLB处理监听,用户需要手动配置该SLB的监听规则。
执行以下命令,可查看cloud-controller-manager的版本。

root@master # kubectl get po -n kube-system -o yaml|grep image:|grep cloud-con|uniq

  image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/cloud-controller-manager-amd64:v1.9.3



通过命令行操作


  1. 通过命令行工具创建一个 Nginx 应用。

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



通过 Kubernetes Dashboard 操作


  1. 将下面的 yml code 保存到 nginx-svc.yml文件中。

apiVersion: v1
kind: Service
metadata:
  labels:
    run: nginx
  name: http-svc
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  type: LoadBalancer




2. 登录容器服务管理控制台,单击目标集群右侧的控制台,进入 Kubernetes Dashboard 页面。
3. 单击创建,开始创建应用。



4. 单击使用文件创建。选择刚才保存的nginx-svc.yml 文件
5. 单击上传。
这样会创建一个阿里云负载均衡实例指向创建的 Nginx 应用,服务的名称为 http-svc。


6. 在 Kubernetes Dashboard 上定位到 default 命名空间,选择服务。
可以看到刚刚创建的 http-svc 的 Nginx 服务和机器的负载均衡地址 http://114.55.79.24:80


7. 将该地址拷贝到浏览器中即可访问该服务。


更多信息


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

注释


阿里云可以通过注释的形式支持丰富的负载均衡功能。
使用已有的内网 SLB
需要指定两个annotation。注意修改成您自己的 Loadbalancer-id。
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
    service.beta.kubernetes.io/alicloud-loadbalancer-id: your-loadbalancer-id
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - name: web
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  sessionAffinity: None
  type: LoadBalancer

然后保存为 slb.svc 后,执行 kubectl apply -f slb.svc。
创建 HTTPS 类型的 Loadbalancer
先在阿里云控制台上创建一个证书并记录 cert-id,然后使用如下 annotation 创建一个 HTTPS 类型的 SLB。
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-cert-id: your-cert-id
    service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port: "https:443"
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - name: web
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  sessionAffinity: None
  type: LoadBalancer

[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 或者 intranetinternet service.beta.kubernetes.io/alicloud-loadbalancer-slb-network-type负载均衡的网络类型,取值可以是 classic 或者 vpcclassic service.beta.kubernetes.io/alicloud-loadbalancer-charge-type取值可以是 paybytraffic 或者 paybybandwidthpaybybandwidth service.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负载均衡的带宽50 service.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参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-health-check-uri参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-port参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-healthy-threshold参见 HealthCheck[tr=rgb(239, 251, 255)][td]service.beta.kubernetes.io/alicloud-loadbalancer-unhealthy-threshold 参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-health-check-interval参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-timeout参见 HealthCheck service.beta.kubernetes.io/alicloud-loadbalancer-health-check-timeout参见 HealthCheck

取消 提交回答
全部回答(0)
相关问答

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 232052浏览量 回答数 170

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340366浏览量 回答数 8

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148491浏览量 回答数 22

24

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 657650浏览量 回答数 24

43

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 142625浏览量 回答数 43

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 262784浏览量 回答数 39

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 309213浏览量 回答数 251

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 483052浏览量 回答数 24

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 205372浏览量 回答数 2

13

回答

【精品问答合集】Java热门问答

李博 bluemind 2019-05-29 16:00:45 128469浏览量 回答数 13
+关注
青蛙跳
…。。
3
文章
764
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载