【问题标题】:How do I add an nginx load balancer to a kubernetes cluster on Jelastic?如何将 nginx 负载均衡器添加到 Jelastic 上的 kubernetes 集群?
【发布时间】:2020-03-17 16:36:41
【问题描述】:

我有以下 jps 清单:

jpsVersion: 1.3
jpsType: install
application:
  id: my-app
  name: My App
  version: 0.0

  settings:
    fields:
    - name: envName
      caption: Env Name
      type: string
      required: true
    - name: topo
      type: radio-fieldset
      values:
        0-dev: '<b>Development:</b> one master (1) and one scalable worker (1+)'
        1-prod: '<b>Production:</b> multi master (3) with API balancers (2+) and scalable workers (2+)'
      default: 0-dev
    - name: k8s-version
      type: string
      caption: k8s manifest version
      default: v1.16.3

  onInstall:
  - installKubernetes

  actions:
    installKubernetes:
      install:
        jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
        envName: ${settings.envName}
        displayName: ${settings.envName}
        settings:
          deploy: cc
          topo: ${settings.topo}
          dashboard: version2
          ingress-controller: Nginx
          storage: true
          api: true
          monitoring: true
          version: ${settings.k8s-version}
          jaeger: false

现在,我想在 k8s 集群前面添加一个负载均衡器,类似于

  env:
    topology:
      nodes:
      - nodeGroup: bl
        nodeType: nginx-dockerized
        tag: 1.16.1
        displayName: Node balancing
        count: 1
        fixedCloudlets: 1
        cloudlets: 4

当然,上面的kubernetes jps安装创建了拓扑。因此,我无法调用上面的env 部分。如何向 jelastic kubernetes jps 创建的拓扑添加新节点?我找到了addNodes,但它似乎不允许定义进入bl 节点组的内容。

在 Jelastic API 中,我能够找到 EditNodeGroup 方法,我相信它可以解决我的问题。但是,文档不是很清楚,它缺少一个示例,我可以从中猜测如何填充参数。如何使用该方法将 nginx 负载均衡器添加到我的 k8s 环境中?

编辑

EditNodeGroup 方法对这个问题没有用处。我认为,目前,我最好的选择是分叉jelastic-jps/kubernetes 并根据我的需要调整beforeinstall。我还有其他选择吗?我浏览了 API,发现无法添加我的 nginx 负载均衡器。

【问题讨论】:

    标签: nginx kubernetes jelastic


    【解决方案1】:

    环境拓扑在外部清单调用期间无法更改,因为它是在该清单中创建的。但它可以在清单完成后更改。 整个做法是:

    onInstall:
      - installKubernetes
      - addBalancer
    actions:
      installKubernetes:
        install:
          jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
          envName: ${settings.envName}
    ...
      addBalancer:
        - install:
            envName: ${settings.envName}
            jps:
              type: update
              name: Add Balancer Node
              onInstall:
                - addNodes:
    ....
    

    请参考https://github.com/jelastic-jps/kubernetes/blob/ad62208a5b3796bb7beeaedfce5c42b18512d9f0/addons/storage.jps 示例,了解如何在清单中使用“addNodes”操作。

    此外,参考 https://docs.cloudscripting.com/creating-manifest/actions/#addnodes 描述了所有可以使用的字段。

    Jelastic 的 K8s 最新发布版本是:v1.16.6,因此您可以在清单中使用它。

    但是,请注意,通过此 Balancer 实例,您将访问默认的 Kubernetes 入口控制器,即您当前在“http(s)://”处拥有的相同入口/路径。

    当然,您可以为添加的 BL 分配一个公共 IP,并不再像以前那样通过共享平衡器访问相同的功能,而是从现在开始通过公共 IP。

    简而言之,Jelastic Balancer 实例目前不提供 Kubernetes 服务 LoadBalancer 功能——如果您需要这个功能。 K8S LoadBalancer 功能将在下一个版本中添加:添加到“cp”worker 的公共 IP 可以自动用于在 Kubernetes 集群内创建的 LoadBalancer。我们希望将此功能添加到 1.16.8+

    如果您有任何其他问题,请告诉我们。

    【讨论】:

    • nginx-jelastic.conf添加nginx负载均衡后默认upstream为空是否正常?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2018-10-21
    相关资源
    最近更新 更多