kubernetes
  • Introduction
  • 安装
    • 组件端口
    • 二进制安装
    • Kubeadm
      • 安装单Master集群
      • 安装高可用集群(手动分发证书)
      • 安装高可用集群(自动上传证书)
      • 安装ETCD集群
      • 安装高可用集群(外部ETCD)
    • 启动参数解析
      • ETCD相关参数
  • 负载均衡
    • Service
    • Ingress
    • 安装MetalLB
    • Nginx-ingress-controller
      • 转发TCP与UDP服务
      • 启动参数
      • 自定义Nginx模板
  • 存储
    • Volume
    • PV与PVC
    • StorageClass
    • Local-PV
      • Static-Provisioner
    • 实践
      • Ceph-RBD
      • NFS
  • 有状态服务
    • Mysql实践
    • Operator
      • Etcd
      • Zookeeper
      • Mysql
  • 认证与授权
    • 认证
      • 实践
    • 授权
  • Helm
    • 安装
    • Chart
      • 依赖
    • Helm命令
    • Repository
  • 日志
  • 监控
    • Prometheus体系
      • Prometheus
        • 内置函数
        • 配置
          • 规则文件
        • PromQL
      • Exporter
        • Metrics
      • Grafana
        • 配置
      • AlertManager
        • 配置
    • 容器监控
      • Cadvisor的指标
      • k8s中部署Prom与Cadvisor
  • Istio
  • 资源预留
    • imagefs与nodefs
    • 总结
  • 集群联邦
    • 联邦DNS原理
    • 联邦DNS安装
    • 安装federation-v1
  • Other
    • ImagePullSecret
    • QOS
    • Apiserver的代理
    • 资源配额
Powered by GitBook
On this page
  • 集群准备
  • 安装
  • 配置
  • 使用
  • 卸载
  • Reference

Was this helpful?

  1. 负载均衡

安装MetalLB

集群准备

  • 准备好一个kubernetes集群,版本在1.9.0或以上。这里我们准备了一个集群,有两个节点,版本为1.14.0

  • 网络插件使用flannel或Weave Net,如果使用Calico,则不要使用BGP模式。这里我们使用Calico,IPIP模式。

  • kube-proxy要设置为iptables而不能是ipvs

安装

下载metallb.yaml文件,然后直接安装

$ wget https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml
$ kubectl apply -f metallb.yaml

上述命令会创建命名空间metallb-system并在该命名空间中安装MetalLB相关资源。安装成功后,验证以下组件应该运行正常

$ kubectl get deploy -n metallb-system
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
controller   1/1     1            1           40s

$ kubectl get daemonset -n metallb-system
NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
speaker   2         2         2       2            2           <none>          77s

配置

安装成功后,MetalLB的组件处于空闲状态,因为还没有配置。接下来,我们创建如下的一个配置,注意addresses应该和集群主机在同一个网段:

使用

MetalLB配置好以后,我们就可以来发布一个类型为LoadBalancer的服务了。MetalLB会把相应的事件写入到Service中,我们可以通过kubectl describe service <service-name>来查看与定位问题。

首先我们创建一个Deployment,发布两个实例:

接下来,我们发布一个Service:

然后怎么访问呢?

卸载

删除metallb.yaml中的所有资源即可:

$ kubectl delete -f metallb.yaml

Reference

PreviousIngressNextNginx-ingress-controller

Last updated 5 years ago

Was this helpful?

https://metallb.universe.tf/installation/