Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

4.5.2. 节点组定义

安装最新的 openshift-ansible 软件包后,您可以在 /usr/share/ansible/openshift-ansible/roles/openshift_facts/defaults/main.yml 文件中以 YAML 格式查看默认节点组定义集:

openshift_node_groups:
  - name: node-config-master 1
    labels:
      - 'node-role.kubernetes.io/master=true' 2
    edits: [] 3
  - name: node-config-infra
    labels:
      - 'node-role.kubernetes.io/infra=true'
    edits: []
  - name: node-config-compute
    labels:
      - 'node-role.kubernetes.io/compute=true'
    edits: []
  - name: node-config-master-infra
    labels:
      - 'node-role.kubernetes.io/infra=true,node-role.kubernetes.io/master=true'
    edits: []
  - name: node-config-all-in-one
    labels:
      - 'node-role.kubernetes.io/infra=true,node-role.kubernetes.io/master=true,node-role.kubernetes.io/compute=true'
    edits: []
1
节点组名称。
2
与节点组关联的节点标签列表。有关详细信息,请参阅节点主机标签
3
任何对节点组配置的编辑。

如果您没有在清单文件中的 [OSEv3:vars] 组中设置 openshift_node_groups 变量,则会使用这些默认值。但是,如果要设置自定义节点组,则必须在清单文件中定义整个 openshift_node_groups 结构,包括所有计划的节点组。

openshift_node_groups 值没有与默认值合并,您必须将 YAML 定义转换为 Python 字典。然后,您可以使用 edits 字段指定键值对来修改任何节点配置变量。

注意

有关可配置节点变量的参考,请参阅Master 和节点配置文件

例如,以下清单文件中的条目定义了名为 node-config-masternode-config-infranode-config-compute 的组。

openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true']}, {'name': 'node-config-infra', 'labels': ['node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true']}]

您还可以使用其他标签定义新节点组名称,清单文件中的以下条目定义了名为 node-config-masternode- config-infra、node- config-compute 和 node-config-compute-storage 的组。

openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true']}, {'name': 'node-config-infra', 'labels': ['node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true']}, {'name': 'node-config-compute-storage', 'labels': ['node-role.kubernetes.io/compute-storage=true']}]

当在清单文件中设置条目时,您还可编辑节点组的 ConfigMap:

  • 您可以使用列表,如修改的 node-config-computekubeletArguments.pods-per-core 设置为 20:
openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true']}, {'name': 'node-config-infra', 'labels': ['node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true'], 'edits': [{ 'key': 'kubeletArguments.pods-per-core','value': ['20']}]}]
  • 您可以使用列表来修改多个键值对,例如修改 node-config-compute 组,为 kubelet 添加两个参数:
openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true']}, {'name': 'node-config-infra', 'labels': ['node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true'], 'edits': [{ 'key': 'kubeletArguments.experimental-allocatable-ignore-eviction','value': ['true']}, {'key': 'kubeletArguments.eviction-hard', 'value': ['memory.available<1Ki']}]}]
  • 您还可以使用字典作为值,如修改 node-config-compute 组把 perFSGroup 设置为 512Mi
openshift_node_groups=[{'name': 'node-config-master', 'labels': ['node-role.kubernetes.io/master=true']}, {'name': 'node-config-infra', 'labels': ['node-role.kubernetes.io/infra=true']}, {'name': 'node-config-compute', 'labels': ['node-role.kubernetes.io/compute=true'], 'edits': [{ 'key': 'volumeConfig.localQuota','value': {'perFSGroup':'512Mi'}}]}]

每当运行 openshift_node_group.yml playbook 时,在 edits 字段中定义的更改会更新相关的 ConfigMap(本例中的node-config-compute ),这最终将影响主机上的节点配置文件。

注意

运行 openshift_node_group.yaml playbook 只会更新新节点。无法运行它来更新集群中的现有节点。