第 9 章 将主机添加到现有集群
9.1. 添加主机
您可以通过运行 scaleup.yml playbook 添加新主机到集群。此 playbook 查询 master,为新主机生成和发布新证书,然后仅在新主机上运行配置 playbook。在运行 scaleup.yml playbook 之前,请完成所有必备的主机准备步骤。
scaleup.yml playbook 仅配置新主机。它不会更新 master 服务的 NO_PROXY,也不会重启 master 服务。
您必须有一个现有的清单文件,如 /etc/ansible/hosts,它代表当前集群配置,才能运行 scaleup.yml playbook。如果您之前使用 atomic-openshift-installer
命令来运行安装,您可以检查 ~/.config/openshift/hosts 查找安装程序生成的最后一个清单文件,并将该文件用作清单文件。您可以根据需要修改此文件。然后,在运行 ansible-playbook
时,您必须使用 -i
指定文件位置。
有关推荐的最大节点数,请参阅集群最大值部分。
流程
通过更新 openshift-ansible 软件包来确保您有最新的 playbook:
# yum update openshift-ansible
编辑 /etc/ansible/hosts 文件,并将 new_<host_type> 添加到 [OSEv3:children] 部分。例如,要添加新节点主机,请添加 new_nodes :
[OSEv3:children] masters nodes new_nodes
若要添加新的 master 主机,可添加 new_masters。
创建一个 [new_<host_type>] 部分来为新主机指定主机信息。将此部分格式化为现有部分,如下例所示:
[nodes] master[1:3].example.com node1.example.com openshift_node_group_name='node-config-compute' node2.example.com openshift_node_group_name='node-config-compute' infra-node1.example.com openshift_node_group_name='node-config-infra' infra-node2.example.com openshift_node_group_name='node-config-infra' [new_nodes] node3.example.com openshift_node_group_name='node-config-infra'
如需了解更多选项,请参阅配置主机变量。
在添加新 master 时,将主机添加到 [new_masters] 部分和 [new_nodes] 部分,以确保新 master 主机是 OpenShift SDN 的一部分:
[masters] master[1:2].example.com [new_masters] master3.example.com [nodes] master[1:2].example.com node1.example.com openshift_node_group_name='node-config-compute' node2.example.com openshift_node_group_name='node-config-compute' infra-node1.example.com openshift_node_group_name='node-config-infra' infra-node2.example.com openshift_node_group_name='node-config-infra' [new_nodes] master3.example.com
重要如果您使用
node-role.kubernetes.io/infra=true
标签标记 master 主机,且没有其他专用基础架构节点,还必须通过向条目中添加openshift_schedulable=true
明确将该主机标记为可以调度。否则,registry 和路由器 Pod 将无法放置到任何节点。更改到 playbook 目录,再运行 openshift_node_group.yml playbook。如果您的清单文件位于 /etc/ansible/hosts 默认以外的位置,请使用
-i
选项指定位置:$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook [-i /path/to/file] \ playbooks/openshift-master/openshift_node_group.yml
这会为新节点组创建 ConfigMap,并最终为主机上的节点配置文件。
注意运行 openshift_node_group.yaml playbook 只会更新新节点。无法运行它来更新集群中的现有节点。
运行 scaleup.yml playbook。如果您的清单文件位于默认 /etc/ansible/hosts 以外的位置,请使用
-i
选项指定位置。对于额外的节点:
$ ansible-playbook [-i /path/to/file] \ playbooks/openshift-node/scaleup.yml
对于额外的 master:
$ ansible-playbook [-i /path/to/file] \ playbooks/openshift-master/scaleup.yml
如果您在集群中部署了 EFK 堆栈,请将节点标签设置为
logging-infra-fluentd=true
:# oc label node/new-node.example.com logging-infra-fluentd=true
- 在 playbook 运行后,验证安装。
将您在 [new_<host_type>] 部分定义的任何主机移动到它们的相应部分。通过移动这些主机,后续的 playbook 运行使用此清单文件正确处理节点。您可以保留空 [new_<host_type>] 部分。例如,添加新节点时:
[nodes] master[1:3].example.com node1.example.com openshift_node_group_name='node-config-compute' node2.example.com openshift_node_group_name='node-config-compute' node3.example.com openshift_node_group_name='node-config-compute' infra-node1.example.com openshift_node_group_name='node-config-infra' infra-node2.example.com openshift_node_group_name='node-config-infra' [new_nodes]