目录

1.如何将特定Pod调度到指定的节点?

2. 什么是节点的亲和性?3.

什么是污点,它的主要用途是什么?

4. 解释ConfigMap的作用。

5. Secret 和ConfigMap相比较有哪些优点。


1.如何将特定Pod调度到指定的节点?

在K8s中,将特定Pod调度到指定节点有以下三种方法:

(1)nodeName(直接指定节点名称)

使用nodeName方式时,可以直接在Pod的YAML中通过spec.nodeName字段指定目标节点的名称。这种方式最为直接,但会完全绕过Kubernetes调度器,如果指定的节点不存在或资源不足,Pod将无法启动,因此主要适用于测试调试、DaemonSet工作负载或需要对调度进行绝对控制的特殊场景。

(2)nodeSelector(节点选择器)

nodeSelector方式需要先为节点打上标签,然后在Pod的spec.nodeSelector字段中声明所需的标签,调度器就会将Pod调度到满足该标签的节点上。这种方式简单易用,基于精准匹配机制,要求节点的标签键值对与Pod声明完全一致,适用于将需要高性能存储的Pod调度到SSD节点、或将GPU任务调度到GPU节点等场景。

(3)节点亲和性(Node Affinity)

节点亲和性是通过spec.affinity.nodeAffinity字段配置的更高级调度方式,比nodeSelector更加灵活。它支持使用In、NotIn、Exists、Gt等多种运算符进行复杂匹配规则,并且可以设置required(硬性要求,必须满足)或preferred(软性偏好,尽量满足但不强制)两种策略,适用于需要精细调度控制的场景,例如将服务分散到不同可用区以提高高可用性,或优先将Pod调度到性能更好的节点上。

2. 什么是节点的亲和性?

节点亲和性 是K8s调度器用来吸引Pod到特定节点的一组规则。它提供了比nodeSelector更强大的功能,支持条件运算符和软硬两种调度策略。节点亲和性分为硬亲和性(Required)和软亲和性(Preferred)两种。其中,硬亲和性要求Pod必须调度到满足规则的节点上,在找不到符合条件的节点的时候,Pod会一直处于Pending状态;软亲和性是指Pod尽量调度到满足规则的节点上,但并不强制,当找不到的受会调度到其他节点,调度器会打分选择最优节点。

3.什么是污点,它的主要用途是什么?

污点(Taint) 是作用在节点上的一种标记,用于排斥Pod,就是让节点“嫌弃”某些Pod,不让它们调度上来。污点与容忍度 配合使用,节点设置了污点后,只有具有相应容忍度的Pod才能被调度到该节点。污点的主要用途具体体现在四个方面:一是预留专机,给GPU或合规等专用节点打上污点,防止普通Pod抢占资源;二是节点维护,维护前给节点添加NoExecute污点自动驱逐正在运行的Pod,维护完成后再移除;三是定向隔离,强制将特定的系统组件(如监控、日志)只运行在特定节点上;四是自动避险,当节点出现磁盘或内存压力时,系统会自动添加污点,拒绝新Pod接入,避免节点故障恶化。

4. 解释ConfigMap的作用。

ConfigMap是K8s中用于存储非敏感配置数据的API对象,它的核心作用是将配置信息从容器镜像中解耦出来。通过ConfigMap,用户可以将环境变量、命令行参数或配置文件等配置以键值对的形式独立存储和管理,然后在Pod启动时通过环境变量或卷挂载的方式注入到容器中。这样一来,同一个镜像就可以在不同的环境(如开发、测试、生产)中使用不同的ConfigMap配置,无需重新构建镜像,大大提升了应用的可移植性和配置管理的灵活性。

5. Secret 和ConfigMap相比较有哪些优点。

与ConfigMap相比,Secret专门用来保存密码、API密钥、证书等敏感信息,主要有以下几个好处:第一,Secret的内容用Base64编码保存,不会像ConfigMap那样直接明文显示在文件中,相对更安全;第二,Secret可以开启etcd加密,把数据真正保护起来;第三,Secret挂载到Pod时默认放在内存里,不写入硬盘,Pod删除时数据也会自动清除,不容易泄露;第四,Secret还能设置更严格的访问权限,并且可以用作拉取私有镜像的凭证,这些功能ConfigMap都做不到。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐