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

时间:2016-12-14 06:57:10

标签: postgresql kubernetes kubernetes-helm

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

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

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

我目前的yaml供参考。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

E.g。你可以像这样标记你的节点:

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

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