开发者社区> 问答> 正文

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



通过命令行操作


  1. 通过命令行工具创建一个 Nginx 应用。[backcolor=transparent]root@master [backcolor=transparent]# kubectl run -it nginx --image=registry.aliyuncs.com/spacexnice/netdia:latest
  2. [backcolor=transparent]root@master [backcolor=transparent]# kubectl get po
  3. [backcolor=transparent]NAME                                   READY     STATUS    RESTARTS   AGE
  4. [backcolor=transparent]nginx[backcolor=transparent]-[backcolor=transparent]2721357637[backcolor=transparent]-[backcolor=transparent]dvwq3                 [backcolor=transparent]1[backcolor=transparent]/[backcolor=transparent]1[backcolor=transparent]       [backcolor=transparent]Running[backcolor=transparent]   [backcolor=transparent]1[backcolor=transparent]          [backcolor=transparent]6s

为 Nginx 应用创建阿里云负载均衡服务,指定 type=LoadBalancer 来向外网用户暴露 Nginx 服务。
  1. [backcolor=transparent]root@master [backcolor=transparent]# kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
  2. [backcolor=transparent]root@master [backcolor=transparent]# kubectl get svc
  3. [backcolor=transparent]NAME                  CLUSTER[backcolor=transparent]-[backcolor=transparent]IP      EXTERNAL[backcolor=transparent]-[backcolor=transparent]IP      PORT[backcolor=transparent]([backcolor=transparent]S[backcolor=transparent])[backcolor=transparent]                        AGE
  4. [backcolor=transparent]nginx                 [backcolor=transparent]172.19[backcolor=transparent].[backcolor=transparent]10.209[backcolor=transparent]   [backcolor=transparent]101.37[backcolor=transparent].[backcolor=transparent]192.20[backcolor=transparent]   [backcolor=transparent]80[backcolor=transparent]:[backcolor=transparent]31891[backcolor=transparent]/[backcolor=transparent]TCP                   [backcolor=transparent]4s

在浏览器中访问 http://101.37.192.20,来访问您的 Nginx 服务。

通过 Kubernetes Web UI 操作


  1. 将下面的 yml code 保存到 nginx-svc.yml文件中。[backcolor=transparent]apiVersion[backcolor=transparent]:[backcolor=transparent] v1
  2. [backcolor=transparent]kind[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]Service
  3. [backcolor=transparent]metadata[backcolor=transparent]:
  4. [backcolor=transparent]  labels[backcolor=transparent]:
  5. [backcolor=transparent]    run[backcolor=transparent]:[backcolor=transparent] nginx
  6. [backcolor=transparent]  name[backcolor=transparent]:[backcolor=transparent] http[backcolor=transparent]-[backcolor=transparent]svc
  7. [backcolor=transparent]  [backcolor=transparent]namespace[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]default
  8. [backcolor=transparent]spec[backcolor=transparent]:
  9. [backcolor=transparent]  ports[backcolor=transparent]:
  10. [backcolor=transparent]  [backcolor=transparent]-[backcolor=transparent] port[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]80
  11. [backcolor=transparent]    protocol[backcolor=transparent]:[backcolor=transparent] TCP
  12. [backcolor=transparent]    targetPort[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]80
  13. [backcolor=transparent]  selector[backcolor=transparent]:
  14. [backcolor=transparent]    run[backcolor=transparent]:[backcolor=transparent] nginx
  15. [backcolor=transparent]  type[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]LoadBalancer

登录 Kubernetes Web UI。
有关如何访问 Kubernetes Web UI,参见 访问 Kubernetes Web UI
单击 CREATE 创建应用。
单击 Upload a YAML or JSON file。选择刚才保存的 nginx-svc.yml 文件
单击 DEPLOY。
这样会创建一个阿里云负载均衡实例指向创建的 Nginx 应用,服务的名称为 http-svc。
在 Kubernetes Web UI 上定位到 default 命名空间,选择 Services。
可以看到刚刚创建的 http-svc 的 Nginx 服务和机器的负载均衡地址 http://101.37.179.56:80

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

更多信息


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

注释


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

注意:注释的内容是区分大小写的。
[tr=rgb(255, 255, 255)]注释描述默认值[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-ProtocolPort多个值之间由逗号分隔,比如:https:443,http:80无[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-AddressType取值可以是 internet 或者 intranetinternet[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-SLBNetworkType负载均衡的网络类型,取值可以是 classic 或者 vpcclassic 或者 vpc[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-ChargeType取值可以是 paybytraffic 或者 payby bandwidthpaybybandwidth[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-Region负载均衡所在的地域无[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-Bandwidth负载均衡的带宽50[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-CertID阿里云上的认证 ID。您需要先上传证书“”[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckFlag取值是 on 或者 off“off” tcp no need for this mark because it default to “on”[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckType参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckURI参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckConnectPort参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthyThreshold参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-UnhealthyThreshold参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckInterval参见 HealthCheck[tr=rgb(239, 251, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckConnectTimeout参见 HealthCheck[tr=rgb(255, 255, 255)]service.beta.kubernetes.io/alicloud-loadbalancer-HealthCheckTimeout参见 HealthCheck

展开
收起
反向一觉 2017-10-30 16:30:31 3019 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

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

相关镜像