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: []
如果您没有在清单文件中的 [OSEv3:vars]
组中设置 openshift_node_groups
变量,则会使用这些默认值。但是,如果要设置自定义节点组,则必须在清单文件中定义整个 openshift_node_groups
结构,包括所有计划的节点组。
openshift_node_groups
值没有与默认值合并,您必须将 YAML 定义转换为 Python 字典。然后,您可以使用 edits
字段指定键值对来修改任何节点配置变量。
有关可配置节点变量的参考,请参阅Master 和节点配置文件。
例如,以下清单文件中的条目定义了名为 node-config-master
、node-config-infra
和 node-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-master
、node-
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-compute
将kubeletArguments.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 只会更新新节点。无法运行它来更新集群中的现有节点。