不同操作系统的Kubernetes作业

不同操作系统的Kubernetes作业,kubernetes,Kubernetes,有了Kubernetes 1.14中Windows server 2019的支持,似乎可以拥有不同操作系统的节点。例如,一个集群中的Ubuntu 18.04节点、RHEL 7节点、Windows服务器节点 在我的用例中,我希望预先配置每个操作系统类型的队列系统。节点将从处理作业的特定队列中获取信息 考虑到上述情况,是否可以将作业配置为转到特定队列,然后再转到特定的操作系统节点?Kubernetes节点中填充了一组标准标签,其中包括Kubernetes.io/OS 通过节点选择器、podAffin

有了Kubernetes 1.14中Windows server 2019的支持,似乎可以拥有不同操作系统的节点。例如,一个集群中的Ubuntu 18.04节点、RHEL 7节点、Windows服务器节点

在我的用例中,我希望预先配置每个操作系统类型的队列系统。节点将从处理作业的特定队列中获取信息


考虑到上述情况,是否可以将作业配置为转到特定队列,然后再转到特定的操作系统节点?

Kubernetes节点中填充了一组标准标签,其中包括
Kubernetes.io/OS

通过
节点选择器
podAffinity
podAntiAffinity
发送到特定位置

apiVersion: extensions/v1beta1
kind: Pod
metadata:
  name: anapp
spec:
  containers:
  - image: docker.io/me/anapp
    name: anapp
    ports:
     - containerPort: 8080
  nodeSelector:
    kubernetes.io/os: linux
如果您需要更细粒度的控件(例如在Ubuntu/RHEL之间进行选择),那么您需要在kubernetes节点部署中添加自定义标签以进行选择。这种级别的选择非常罕见,因为容器运行时试图隐藏大部分差异,但如果您有特殊情况,请向节点添加额外的标签元数据

我建议使用
cat/etc/*release*
中的
ID
VERSION\u ID
字段,因为大多数Linux发行版都以某种形式填充此信息

kubectl label node thenode softey.com/release-id=debian
kubectl label node thenode softey.com/release-version-id=9

您可以使用标签、选择器和关联将不同的pod分配给不同的节点。看看OP可能还想使用污染+容忍来确保只有Windows的作业在Windows节点上得到调度。