0

我想在 Kubernetes 集群上部署一个带有复制功能的 Postgres 服务。

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

有没有办法,我可以在哪里获得具有不同 pod 资源配置的服务?

我当前的 yaml 供参考。

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

4

2 回答 2

0

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

例如,您可以像这样标记您的节点:

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

缺点当然是您必须一次管理两个部署,但无论如何这都是这个问题的内在因素。

于 2017-02-04T21:12:41.227 回答
0

您不能为同一 Replica 中的 pod 分配不同的配置选项(即资源限制)。从本质上讲,它们应该是相同的。您需要创建多个副本才能完成此操作。

于 2017-01-03T19:13:34.833 回答