通过节点方式在Kubernetes中进行微服务部署

时间:2018-04-17 10:19:38

标签: jenkins kubernetes

我正在尝试在不同的节点中部署我的微服务集。为了安装kubeadm和创建集群,我遵循以下文档。

  1. https://medium.com/@SystemMining/setup-kubenetes-cluster-on-ubuntu-16-04-with-kubeadm-336f4061d929
  2. https://medium.com/@Grigorkh/install-kubernetes-on-ubuntu-1ac2ef522a36
  3. https://www.youtube.com/watch?v=b_fOIELGMDY&t=108s
  4. 我需要一个拥有2台工人机器的主人。我清楚知道如何创建kubernetes集群。

    我的要求:我的应用程序有一组独立的微服务。我需要将一组微服务的docker镜像部署到一个node1和docker镜像中,其他设置为node2。 node3中的第3组微服务......等等......这是我的部署计划。如果我走向错误的方向,请纠正我,因为我只在docker,kubernetes和jenkins开始探索。 Devop。

    我的困惑:

    1. 根据我的要求按节点区域划分,Kubernetes可以采用这种部署策略吗?这是标准方式之一吗?
    2. 如果我使用Jenkins实现CI / CD管道,那么我是否需要在每个Vm中安装Jenkins?是指主机还是驻留节点的机器?
    3. 这些都是我对Kubernetes部署的困惑。如果我的想法错了,请纠正我,因为我只是DevOp世界的初学者。如何通过使用Kubernetes澄清我对部署的疑虑?

1 个答案:

答案 0 :(得分:2)

要回答您的第一个问题 - 您基本上需要为租户分配每个节点。如果有合规/监管原因,那么你应该这样做(尽管它不会非常有效)。以下是如何做到这一点:

在node1上添加一个污点:

kubectl taint nodes node1.compute.companyname.com reservedfor=tenant1:NoSchedule

以上含义是node1只会安排具有匹配容忍度的pod,而不是任何其他pod。对于需要在node1上安排的微服务,您必须为pod YAML文件添加容差,如:

tolerations:
- key: "reservedfor"
  operator: "Equal"
  value: "tenant1"
  effect: "NoSchedule"

可以扩展相同的逻辑 - 这样即使tenant1需要4台机器,那么所有4台机器都可以被上面的键值对污染,然后可以在这些节点上容忍pod。查看文档hereblog with an example here

您也可以使用pod/node affinity来实现上述目标。

关于Jenkins的第二个问题 - 不,你不需要在每个节点上安装Jenkins,但除此之外还需要更多细节。