我想在Kubernetes集群上部署一个带复制的Postgres服务。
我为此定义了一个PetSet和一个服务。但我只能为服务中的所有pod定义相同的资源限制,因此Kubernetes将这些节点随机分配给节点。
有没有办法,我可以在不同的pod资源配置服务?
我目前的yaml供参考。
https://github.com/kubernetes/charts/blob/master/incubator/patroni/templates/ps-patroni.yaml
答案 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
缺点当然是你必须一次管理两个部署,但这无论如何都是这个问题的内置。