【问题标题】:Deployment to the particular Kubernetes cluster node部署到特定的 Kubernetes 集群节点
【发布时间】:2018-10-17 08:24:16
【问题描述】:

我正在尝试使用 Kubernetes、Jenkins 和我的私有 SVN 存储库来实现 CI/CD 管道。我计划使用具有 3 个主设备和 15 个工作机器/节点的 Kubernetes 集群。并使用 Jenkins 部署使用 spring boot 开发的微服务。所以当我使用 Jenkins 进行部署时,我如何定义哪些微服务需要部署在 kubernetes 集群的哪个节点中?我需要在 Pod 中指定吗?或任何其他定义?

【问题讨论】:

    标签: jenkins kubernetes


    【解决方案1】:

    Kubernetes 确定哪些节点应该运行哪些 pod。你不必那样做。您必须指出每个 pod 需要多少内存和 cpu,k8s 以第一个近似值计算其余部分。

    也就是说,您要做的就是弄清楚如何按环境(dev/stage/prod)或租户(团队 X/团队 Y/团队 Z 或客户端 X/客户端 Y/客户端 Z)- 进入命名空间,然后找出适合该分区的工作流,然后配置 CI 以满足该工作流。

    【讨论】:

    • 你是说我没有权限指定哪个pod需要在哪个节点运行? .因此,如果我有 3 个主节点和 15 个节点,那么我将如何从我的 Angular 2 应用程序调用部署的微服务? .我们需要有它的节点 IP 和端口。那么,如果我不知道部署了我的 pod 的节点,如何调用呢?
    • 我的第二个困惑是 - 我需要如何对这些进行分区?如果我在组织的本地服务器中同时保留 staging 和 dev ,那么我只需要将 AWS Ec2 设为实时(包括蓝绿部署策略)。如果我在 Ec2 中使用 staging 并同时使用 - 那么我如何在这 15 个节点之间划分我的集群?
    • 还请澄清您的陈述“找出对分区有意义的工作流程”?仍然有很多困惑
    • 要使某些东西可用于 angular2 客户端,请在 kubernetes 上使用 Ingress 或 Service 资源。它们在 AWS 上创建了一个公开可见的负载均衡器,该负载均衡器在工作节点上的 pod 位置上保持更新。
    • 命名空间是逻辑分组,具有资源限制。如果您在 kubernetes 上有 staging 和 prod,请为每个创建单独的命名空间,并将部署的应用程序分配给适当的命名空间。您不需要分区或担心工作节点。 Kubernetes 将处理 pod 到工作节点的物理分配。
    【解决方案2】:

    如何定义哪些微服务需要部署在 Kubernetes 集群的哪个节点上?我需要在 Pod 中指定吗?或者任何其他定义?

    • 正如在其他答案中所说,您不需要需要执行此操作,但如果有任何理由使用已弃用的 nodeSelector 或更好的关联性,您可以这样做。它们非常值得花时间阅读,因为您可以将一些与特定服务/微服务组相关的 pod 放在一起或跨可用节点彼此远离,以实现更灵活和有弹性的架构并适当地展开。通过这种方式,您可以帮助调度程序决定在哪里放置什么以实现所需的布局。对于前面提到的大多数基本需求,资源分配可以解决问题,但对于任何细粒度,您都可以使用亲和力(和反亲和力)。详细说明文档在这里:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多