Service(LoadBalancer)

打印 上一主题 下一主题

主题 924|帖子 924|积分 2772

LoadBalancer简介


  • 这种范例建构在NodePort范例之上,大部门情况下只实用于支持外部负载平衡器的云提供商(AWS,阿里云,华为云等)利用,由它接入外部客户端的请求并调度至集群节点相应的NodePort之上。因此LoadBalancer一样具有NodePort和ClusterIP。
  • 简而言之,一个LoadBalancer范例的Service会指向关联至Kubernetes集群外部的、切实存在的某个负载平衡装备,该装备通过工作节点之上的NodePort向集群内部发送请求流量。
  • 例如Amazon云计算情况中的ELB实例即为此类的负载平衡装备。此范例的优势在于,它可以大概把来自于集群外部客户端的请求调度至全部节点(或部门节点)的NodePort之上,而不是依靠于客户端自行决定连接至哪个节点,从而避免了因客户端指定的节点故障而导致的服务不可用。

公有云(以阿里云为例)配置

 参考文档:https://help.aliyun.com/apsara/enterprise/v_3_15_0_20210816/csk/enterprise-ascm-user-guide/access-a-service-through-server-load-balancer--server-load-balancer-.html
 私有云(以MetalLB为例配置)

简介

MetalLB 是为裸机Kubernetes集群实现的负载平衡器,利用尺度路由协议ARP或BGP。Kubernetes官方没有为裸机集群提供网络负载平衡器(LoadBalancer范例的服务)的实现。各家云厂商(GCP、AWS、Azure…)有相应实现,但必须运行在自身的云情况上才能利用,如果没有在受支持的IaaS平台(GCP、AWS、Azure…)上运行,那么负载平衡器在创建时将无穷期地保持pending状态,如果你要利用loadbalancer service,那么就要用到metallb了
工作模式

layer 2模式:也就是工作在2层来负责相应arp请求,对于局域网中的人来说仿佛就是给服务分配了一个ip,但是2层模式不是真正的负载平衡,因为全部的流量会颠末集群中的一个节点,当这个节点挂了的话,metallb会迁移ip到别的一个节点上。Layer 2模式更为通用,不需要用户有额外的装备;但由于Layer 2模式利用ARP/ND,地址池分配需要跟客户端在同一子网,地址分配略为繁琐。

bgp模式:集群中全部node都会跟上联路由器建立BGP连接,而且会告知路由器应该如何转发service的流量。
BGP模式是真正的LoadBalancer。但是需要你的路由器支持bgp,此处利用layer 2模式。
 
文档

安装:MetalLB, bare metal load-balancer for Kubernetes
配置利用:MetalLB, bare metal load-balancer for Kubernetes
 安装

  1. # 如果kube-proxy使用的是IPVS模式,你需要启用staticARP
  2. [root@k8s-master MetalLB]# kubectl edit configmap -n kube-system kube-proxy
  3. # 设置staticARP为true
  4. mode: "ipvs"
  5. ipvs:
  6.   strictARP: true
  7. # 创建资源
  8. [root@k8s-master MetalLB]# kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.5/config/manifests/metallb-native.yaml
  9. # 查看资源
  10. [root@k8s-master MetalLB]# kubectl get pod -n metallb-system
  11. NAME                          READY   STATUS    RESTARTS   AGE
  12. controller-79d46b9996-thtw2   1/1     Running   0          2m35s
  13. speaker-9r59c                 1/1     Running   0          2m34s
  14. speaker-shdvj                 1/1     Running   0          2m34s
  15. speaker-w4g96                 1/1     Running   0          2m34s
  16. # 设置ip地址池
  17. [root@k8s-master MetalLB]# cat config.yaml
  18. apiVersion: metallb.io/v1beta1
  19. kind: IPAddressPool
  20. metadata:
  21.   name: first-pool
  22.   namespace: metallb-system
  23. spec:
  24.   addresses:
  25.   - 192.168.10.200-192.168.10.250
  26. ---
  27. apiVersion: metallb.io/v1beta1
  28. kind: L2Advertisement
  29. metadata:
  30.   name: example
  31.   namespace: metallb-system
  32. spec:
  33.   ipAddressPools:
  34.   - first-pool
  35. [root@k8s-master k8s-test]# cat deployment.yaml
  36. apiVersion: apps/v1
  37. kind: Deployment
  38. metadata:
  39.   name: myapp-deploy
  40.   namespace: default
  41. spec:
  42.   replicas: 3
  43.   selector:
  44.     matchLabels:
  45.       app: myapp
  46.   template:
  47.     metadata:
  48.       labels:
  49.         app: myapp
  50.     spec:
  51.       containers:
  52.       - name: myapp
  53.         image: ikubernetes/myapp:v1
  54.         ports:
  55.         - containerPort: 80
  56.           name: http
  57. [root@k8s-master k8s-test]# cat svc.yaml
  58. apiVersion: v1
  59. kind: Service
  60. metadata:
  61.   name: myapp
  62. spec:
  63.   type: LoadBalancer
  64.   selector:
  65.     app: myapp
  66.   ports:
  67.   - name: http
  68.     port: 80
  69.     protocol: TCP
  70.     targetPort: 80
  71.   loadBalancerIP: 192.168.10.222   # 可以指定ip,也可以自动分配,指定的ip必须在ip地址池内
  72. # 查看svc
  73. [root@k8s-master k8s-test]# kubectl get svc
  74. NAME         TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)        AGE
  75. kubernetes   ClusterIP      10.96.0.1        <none>           443/TCP        5d4h
  76. myapp        LoadBalancer   10.101.173.202   192.168.10.222   80:32482/TCP   16m
  77. # 使用EXTERNAL-IP+端口访问
  78. [root@k8s-master k8s-test]# curl 192.168.10.222:80
  79. Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
  80. # 集群外部访问
  81. http://192.168.10.222:80
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表