gpt4 book ai didi

库伯内斯 : Deploy only in one node-pool

转载 作者:行者123 更新时间:2023-12-02 11:35:07 29 4
gpt4 key购买 nike

我目前正在为生产环境创建一个 Kubernetes 集群。在我的集群中,我有 2 个节点池,我们称它们为 api-poolweb-pool

在我的 api-pool 中,我有 2 个节点,每个节点有 4 个 CPU 和 15Gb 的 RAM。

我正在尝试在我的 api-pool 中部署我的 api 的 8 个副本,每个副本应该有 1 个 CPU 和 3.5Gi 的 RAM。

我的 api.deployment.yaml 看起来像这样:

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-dev
spec:
replicas: 8
selector:
matchLabels:
app: my-api
template:
metadata:
labels:
app: my-api
spec:
containers:
- name: api-docker
image: //MY_IMAGE
imagePullPolicy: Always
envFrom:
- configMapRef:
name: api-dev-env
- secretRef:
name: api-dev-secret
ports:
- containerPort: 80
resources:
requests:
cpu: "1"
memory: "3.5Gi"

但我的问题是 Kubernetes 正在我的 web-pool 以及我的 api-pool 上的节点上部署 pod,但是我希望这些 pod 仅部署在我的 api-pool 中。

我试图标记我的 api-pool 节点以使用匹配标签的选择器,但它不起作用,我不确定它是否应该以这种方式工作。

我如何精确到 K8s 以仅在我的 api-pool 中部署这 8 个副本?

最佳答案

您可以使用 nodeselector这是节点选择约束的最简单的推荐形式。

用 pool=api 标记 api-pool 的节点

kubectl label nodes nodename pool=api

在 pod 规范中添加 nodeSelector

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-dev
spec:
replicas: 8
selector:
matchLabels:
app: my-api
template:
metadata:
labels:
app: my-api
spec:
containers:
- name: api-docker
image: //MY_IMAGE
imagePullPolicy: Always
envFrom:
- configMapRef:
name: api-dev-env
- secretRef:
name: api-dev-secret
ports:
- containerPort: 80
resources:
requests:
cpu: "1"
memory: "3.5Gi"
nodeSelector:
pool: api

对于模式高级用例,您可以使用 node affinity .

关于库伯内斯 : Deploy only in one node-pool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60741296/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com