首页 文章

我们可以在Kubernetes中配置一个具有不同pod资源的服务吗?

提问于
浏览
0

我想在Kubernetes集群上部署Postgres服务并进行复制 .

我为此定义了一个PetSet和一个服务 . 但我只能为服务中的所有pod定义相同的资源限制,因此Kubernetes将这些节点随机分配给节点 .

有没有办法,我可以在不同的pods资源conf服务?

我目前的yaml供参考 .

https://github.com/kubernetes/charts/blob/master/incubator/patroni/templates/ps-patroni.yaml

2 回答

  • 0

    您无法为同一副本服务器中的容器分配不同的配置选项(即资源限制) . 本质上它们应该是相同的 . 您需要创建多个副本才能完成此任务 .

  • 0

    对于服务,您可以在一个 Service 定义后面具有多个具有不同 nodeSelector 配置的部署 .

    例如 . 你可以这样标记你的节点:

    kubectl label nodes node-1 pool=freshhardware
    kubectl label nodes node-2 pool=freshhardware
    kubectl label nodes node-3 pool=shakyhardware
    

    然后进行两次这样的部署:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: my-nginx
    spec:
      replicas: 4
      template:
        metadata:
          labels:
            run: my-nginx
        spec:
          containers:
          - name: my-nginx
            image: nginx
            ports:
            - containerPort: 80
          nodeSelector:
            pool: freshhardware
    

    ...第二个看起来与这些交换的领域相同:

    nodeSelector:
            pool: shakyhardware
    

    这样的服务定义将考虑来自两个部署的所有pod:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-nginx
      labels:
        run: my-nginx
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        run: my-nginx
    

    缺点当然是你必须一次管理两个部署,但这无论如何都是这个问题的内置 .

相关问题