• k8s 使本地集群支持 LoadBalancer 服务


    k8s 使本地集群支持 LoadBalancer 服务

    为了使本地集群支持 LoadBalancer 服务,可以参考以下两种实现方案:

    这里我们选择使用 metalLB

    metalLB 的部署很简单,直接使用 yaml 文件部署:

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

    具体参考 https://metallb.universe.tf/installation/

    部署完成后需要为 LoadBalancer 服务选择一个特定的 IP 地址池,这里通过 configmap 来创建。

    下面是一个简单示例:

    $ cat metallb-cm.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: metallb-system
      name: config
    data:
      config: |
        address-pools:
        - name: default
          protocol: layer2
          addresses:
          - 192.168.1.58-192.168.1.60
    kubectl create -f metallb-cm.yaml

    更多高级配置请参考:https://metallb.universe.tf/configuration/

    测试

    创建一个 Nginx 的服务,服务类型为 LoadBalancer

    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1
            ports:
            - name: http
              containerPort: 80
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
    spec:
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer

    服务创建运行之后,可以列出服务信息:

    kubectl get svc
    NAME       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)         AGE
    kube-dns   ClusterIP      10.96.0.10      <none>          53/UDP,53/TCP   7d
    nginx      LoadBalancer   10.96.245.212   10.211.55.240   80:32207/TCP    54m

    这里就发现,LoadBalancer 类型的服务,分配到了我们地址池中的第一个 IP。

    用 curl http://10.211.55.240 验证,就会发现返回了 Nginx 的欢迎信息。




  • 相关阅读:
    Django报错 No module named 'django.templates'
    Django 创建 hello world
    python(Django2.0) 安装
    create-react-app踩坑记
    Vue项目的痛点
    React 错误处理(componentDidCatch)
    Vue props双向绑定
    redux 中的 redux-thunk(中间件)
    webpack 搭建React(手动搭建)
    vue interceptors(拦截器)
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/11936651.html
Copyright © 2020-2023  润新知