如何在kubernetes中将多个节点合并为一个大节点



我有一个应用程序在多线程中运行,在单个实例上需要多个内核。只是想知道如何将多个pod(即容器)合并到一个大节点中,以便应用程序可以在这个大节点上运行。例如:64个pod合并为一个(即64核)。

这不是用于生产或HA服务,只是用于计算。应用程序不能重写。

有这个参考,有点过时了。

首先,在单个节点上运行多个pod不能被称为"合并",我想分配或调度是更好的动词。

你只需要标记你的节点,然后安排你的pod在带有该标签的节点上生成:

  1. 运行:kubectl get nodes,注意节点名

  2. kubectl label nodes <node-name> bignode=yes

  3. 验证您的节点当前被标记:

    kubectl get nodes --show-labels

  4. 那么在你的pod定义中,定义一个节点选择器:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
bignode: yes <----------- 

Kubernetes文档中的更多信息:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/

更新:另一种方法是根据需要将CPU请求设置得尽可能高,所以kubernetes会给你的pod安排足够的CPU内核。

可以是:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "2048Mi"
cpu: "60"

更多信息:https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

如果你关心的只是CPU内核的数量,第二个解决方案更可靠,如果将所有pod放在单个节点上很重要,您也可以阅读有关亲和性规则的内容。

仅使用Kubernetes是无法做到这一点的。K8s不能将节点合并为单个计算单元。

如果您有一个节点,有60个CPU内核,您可以为您的应用程序分配60个内核。
如果您有2个节点,每个节点有30个CPU内核,那么您只能在每个节点上为您的应用程序分配30个CPU内核。

您链接的帖子中的解决方案是您的情况。

相关内容

  • 没有找到相关文章

最新更新