Bib*_*bas 2 deployment kubernetes google-kubernetes-engine
我目前正在为生产环境创建 Kubernetes 集群。在我的集群中,我有 2 个节点池,我们称它们api-pool为web-pool
在我的 中api-pool,我有 2 个节点,每个节点都有 4CPU 和 15Gb RAM。
我正在尝试在 my 中部署 api 的 8 个副本api-pool,每个副本应有 1CPU 和 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"
Run Code Online (Sandbox Code Playgroud)
但我的问题是Kubernetes 将 pod 部署在 myweb-pool和 my 的api-pool节点上,但我希望这些 pod 仅部署在 my 中api-pool。
我尝试标记我的节点api-pool以使用与标签匹配的选择器,但它不起作用,而且我不确定它是否应该以这种方式工作。
我如何精确到 K8s 仅在我的 中部署这 8 个副本api-pool?
您可以使用节点选择器,这是节点选择约束的最简单推荐形式。
使用 pool=api 标记 api-pool 的节点
kubectl label nodes nodename pool=api
Run Code Online (Sandbox Code Playgroud)
添加nodeSelectorPod 规格。
---
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
Run Code Online (Sandbox Code Playgroud)
对于模式高级用例,您可以使用节点亲和力。
| 归档时间: |
|
| 查看次数: |
2272 次 |
| 最近记录: |