zoukankan      html  css  js  c++  java
  • Kubernetes 0-1 K8S自建LoadBalancer

    Metallb介绍

    一般只有云平台支持LoadBalancer,如果脱离云平台,自己搭建的K8S集群,Service的类型使用LoadBalancer是没有任何效果的。为了让私有网络中的K8S集群也能体验到LoadBalabcer,Metallb成为了解决方案。

    Metallb运行在K8S集群中,监视集群内LoadBalancer类型的服务,然后从配置的IP池中为其分配一个可用IP,以ARP/NDP或BGP的方式将其广播出去,这个可用IP成为了LoadBalancer的Url,可供集群外访问。

    Metallb搭建过程

    创建命名空间 metallb-system:

    vim metallb-namespace.yaml
    

    写入文件内容:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: metallb-system
    

    下载metallb.yaml文件

    wget https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml -O metallb.yaml --no-check-certificate
    

    定义LoadBalancer的IP池,先创建configmap

    vim metallb-configMap.yaml
    

    写入文件内容:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: metallb-system
      name: config
    data:
      config: |
        address-pools:
        - name: default
          protocol: layer2
          addresses:
          - 192.168.115.140-192.168.115.199
    

    注意:IP池的网络需要和K8S集群的IP处于同一网段,我的K8S集群网络是192.168.115.13x,这里IP池则是给到192.168.115.140-192.168.115.199的范围。

    执行命令:

    kubectl apply -f metallb-namespace.yaml
    kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
    kubectl apply -f metallb.yaml
    kubectl apply -f metallb-configMap.yaml
    

    LoadBalancer测试

    我们使用类型为LoadBalancer的Service进行测试,以nginx服务为例。

    kubectl create deployment nginx --image=nginx
    kubectl expose deployment nginx --port=80 --type=LoadBalancer
    

    查看nginx服务:

    [root@k8s-master01 test]# kubectl get svc
    NAME         TYPE           CLUSTER-IP   EXTERNAL-IP       PORT(S)        AGE
    kubernetes   ClusterIP      10.0.0.1     <none>            443/TCP        11h
    nginx        LoadBalancer   10.0.0.82    192.168.115.140   80:31610/TCP   8s
    

    可以看到,已经为nginx服务分配了一个192.168.115.140 的IP,直接在浏览器中访问,一切正常。

    image-20200605102015143

  • 相关阅读:
    CentOS7 虚拟机搭建、初始设置、简单使用
    Oozie-4.0.0-cdh5.3.6搭建
    ionic开发环境搭建
    nodejs+chromium 创建桌面应用程序
    常用mysql笔记
    javascript 操作 css Rule
    javascript正则表达式笔记
    grunt之dev-pro环境切换
    grunt之入门实践
    动态加载js
  • 原文地址:https://www.cnblogs.com/Med1tator/p/13052680.html
Copyright © 2011-2022 走看看