6.2. 创建 RuntimeClass 对象来封装调度机制

使用 RuntimeClass 对象简化了调度机制的使用,如污点和容限 ; 您可以部署一个运行时类来封装您的污点和容限,然后将其应用到 pod,再将它们调度到适当的节点。在支持多个操作系统变体的集群中,还需要创建运行时类。

流程

  1. 创建 RuntimeClass 对象 YAML 文件。例如,runtime-class.yaml

    apiVersion: node.k8s.io/v1beta1
    kind: RuntimeClass
    metadata:
      name: <runtime_class_name> 1
    handler: 'docker'
    scheduling:
      nodeSelector: 2
        kubernetes.io/os: 'windows'
        kubernetes.io/arch: 'amd64'
        node.kubernetes.io/windows-build: '10.0.17763'
      tolerations: 3
      - effect: NoSchedule
        key: os
        operator: Equal
        value: "Windows"
    1
    指定 RuntimeClass 对象名称,该名称在您要由此运行时类管理的 pod 中定义。
    2
    指定支持这个运行时类的节点必须存在的标签。使用此运行时类的 Pod 只能调度到与此选择器匹配的节点。运行时类的节点选择器与 pod 的现有节点选择器合并。任何冲突都会阻止 pod 调度到节点。
    3
    指定要在 pod 附加的容限(不包括重复),在准入过程中使用此运行时类运行。这将合并 pod 和运行时类容许的节点集合。
  2. 创建 RuntimeClass 对象:

    $ oc create -f <file-name>.yaml

    例如:

    $ oc create -f runtime-class.yaml
  3. RuntimeClass 对象应用到您的 pod,以确保其被调度到适当的操作系统变体:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-windows-pod
    spec:
      runtimeClassName: <runtime_class_name> 1
    ...
    1
    指定管理 pod 调度的运行时类。