Kubernetes工作节点必须具有完全相同的硬件和操作系统吗



当我用来构建Hypervisor(即VMWare、Hyper-V等(集群时,所有的硬件和软件都必须完全相同。否则,如果其中一个节点出现故障,我可能会导致工作负载出现"冲突"(即虚拟机不会运行,因为硬件或操作系统不同(。

如果你正在用服务器机房周围的各种(即遗留(硬件(即不同的供应商[Dell、HPE等]、不同的CPU类型[即AMD、Intel等]、不相同的BIOS版本、内存大小等(构建kubernetes集群。kubernetes工作节点必须完全相同的硬件才能在集群中正确平衡工作负载吗(即跨节点分配工作负载(。

我想从操作系统(即发行版/内核、库、模块和服务(开始的所有东西都必须是相同的。我只是想找到一个我没有看到好答案的问题的一般答案?

一般来说,在Kubernetes中运行异构硬件是可以的。如果你所有的盒子都是X86机器,那么没有什么可担心的,因为你的docker映像应该到处运行。例如,在云中混合不同类型的点实例是很常见的,这很好。

然而,如果您正在混合体系结构(即arm和x86(或操作系统(即windows和linux(,则添加一个指示这一点的标签通常是有意义的。这些是Kubernetes 1.15+:中的典型标签

$ kubectl describe node xxxxx
Name:               xxxxx
Roles:              node
Labels:             beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=dell_xyz
beta.kubernetes.io/os=linux
[...]

然后,您可以在pod中的节点选择器中使用这些标签:

apiVersion: v1
kind: Pod
metadata:
name: x86-pod
spec:
containers:
- name: x86-test
image: "yourrepo.io/test_repo"
nodeSelector:
beta.kubernetes.io/arch: amd64

Kubernetes工作节点从硬件和软件的角度来看都可以是异构的。只有与kubernetes相关的服务(kubelet、容器运行时、CNI(必须与控制平面版本兼容。

您甚至可以混合运行windows和linux节点。

相关内容

  • 没有找到相关文章

最新更新