代码之家  ›  专栏  ›  技术社区  ›  yuppie-flu

为什么我要在部署之前在单个Kubernetes配置文件中指定服务?

  •  6
  • yuppie-flu  · 技术社区  · 8 年前

    recommend 要在一个配置文件中部署前指定服务,请执行以下操作:

    资源将按照它们在文件中出现的顺序创建。因此,最好首先指定服务,因为这将确保调度器可以在控制器(如部署)创建与服务相关的pod时分散这些pod。

    这是否意味着在kubernetes群集节点之间传播吊舱?

    我使用以下配置进行了测试,其中部署位于服务和POD在节点之间分发之前,没有任何问题。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: incorrect-order
      namespace: test
    spec:
      selector:
        matchLabels:
          app: incorrect-order
      replicas: 2
      template:
        metadata:
          labels:
            app: incorrect-order
        spec:
          containers:
          - name: incorrect-order
            image: nginx
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: incorrect-order
      namespace: test
      labels:
        app: incorrect-order
    spec:
      type: NodePort
      ports:
      - port: 80
      selector:
        app: incorrect-order
    

    另一个 explanation

    请您解释一下,对于一个配置文件,为什么在部署之前指定服务更好?或者可能是一些过时的建议。

    2 回复  |  直到 8 年前
        1
  •  5
  •   Nicola Ben    7 年前

    如果你使用 DNS 作为服务发现,创建顺序并不重要。

    万一 Environment Vars 启动 pod,如果服务定义更改,则以后无法修改它们。

    因此,如果部署了您的服务 之前 启动吊舱后,服务环境被注入链接吊舱内。

    如果使用标签创建Pod/Deployment资源,则创建最后一个后,该资源将通过服务公开(使用适当的选择器指示要公开的资源)。

        2
  •  3
  •   Andreas Wederbrand    7 年前

    您是正确的,因为它会影响工作节点之间的排列。

    没有服务的部署将简单地调度到cpu/内存分配最少的节点上。例如,一个全新的空节点将从新部署中获得所有新的pod。

    让我困惑的是,单独部署并不能带来最佳的传播,但至少目前还不能。

    推荐文章