openshift 添加/删除节点

Manage Node

1 Delete Node

  • 1.1 列出要删除Node上Pod信息

oc adm manage-node devnode6.example.com --list-pods

  • 1.2 将Node设置SchedulingDisabled

oc adm cordon devnode6.example.com

OR

#要将一个或多个节点标记为不可调度:

$ oc adm manage-node <node1> <node2> --schedulable = false

#要将当前不可调度的节点标记为可调度:

$ oc adm manage-node <node1> <node2> --schedulable
#或者,<node1> <node2>您可以使用该--selector=<node_selector>选项将所选节点标记为可调度或不可调度,而不是指定特定节点名称(例如)。
  • 1.3 驱逐Node上的POD

    • 清除logging fluentd pod
oc label node devnode6.example.com logging-infra-fluentd-
oc label node devnode7.example.com logging-infra-fluentd-
oc label node devnode8.example.com logging-infra-fluentd-

    • 驱逐其它POD
oc adm drain devnode6.example.com

  • 1.4 删除Node节点
oc delete node devnode6.example.com

2 Add Node

10.19.41.48

  • 2.1 Reset Node hostname

login to master1(dev_OR_prd)

_NODE_='10.19.41.48'
_NODE_HOSTNAME_='prd-dms-node01.example.com'
ssh "${_NODE_}" "hostnamectl set-hostname ${_NODE_HOSTNAME_}"
ssh "${_NODE_}" "hostname"
  • 2.2 修改master ansible hosts文件
cp /etc/ansible/hosts /etc/ansible/hosts.$(date +%R_%F)
vi /etc/ansible/hosts 
# ADD 
[OSEv3:children]
masters
nodes
new_nodes  # Add this group 

...
...

[new_nodes]
10.19.41.48 openshift_hostname=prd-dms-node01.example.com openshift_ip=10.19.41.48 openshift_node_labels="{'region': 'primary', 'dms': 'enable' ,'app': 'enable','logging-infra-fluentd': 'true'}"
  • 2.3 修改/etc/hosts文件
# 修改master1 /etc/hosts文件
ansible prdmaster1.example.com -m lineinfile -a "dest=/etc/hosts line='10.19.41.48  prd-dms-node01.example.com' backup=yes"

# 同步到全部节点
ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

# 验证新加节点解析
ansible all -m shell  -a 'ping -c 1 prd-dms-node01.example.com'

  • 2.4 运行ansible 添加节点
ansible-playbook \
-i /etc/ansible/hosts \
-e openshift_deployment_type=openshift-enterprise \
-e os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant' \
-e openshift_docker_additional_registries='registry.example.com' \
-e oreg_url='registry.example.com/openshift3/ose-${component}:${version}' \
-e openshift_examples_modify_imagestreams=true \
-e openshift_portal_net='10.186.0.0/16' \
-e osm_cluster_network_cidr='10.192.0.0/14' \
-e osm_host_subnet_length=10 \
/usr/share/ansible/openshift-ansible/playbooks/openshift-node/scaleup.yml
  • 2.5 修改ansible /etc/ansible/hosts
vi /etc/ansible/hosts 

# 将[new_nodes]下的新增的节点移至 [nodes] 组下
[nodes]
# DMS nodes
prd-dms-node01.example.com openshift_hostname=prd-dms-node01.example.com openshift_ip=10.19.41.48 openshift_node_labels="{'region': 'primary', 'logging-infra-fluentd': 'true', 'dms': 'enable' ,'app': 'enable'}"


# 原[new_nodes]组下保持为空
[new_nodes]


# 同步/etc/ansible/hosts 到其它master节点
ansible masters -m copy -a 'src=/etc/ansible/hosts dest=/etc/ansible/hosts backup=yes'
  • 2.6 修改DNS

# 去除网卡配置文件中的DNS行
ansible prd-dms-node01.example.com -m lineinfile -a 'dest=/etc/sysconfig/network-scripts/ifcfg-ens192 regexp='^DNS' state=absent backup=yes'
ansible prd-dms-node01.example.com -m service -a 'name=NetworkManager state=restarted enabled=yes'


# 同步DNS配置文件 
ansible prd-dms-node01.example.com -m copy -a 'src=/etc/dnsmasq.d/hisense.conf dest=/etc/dnsmasq.d/hisense.conf'
ansible prd-dms-node01.example.com -m copy -a 'src=/etc/dnsmasq.d/origin-upstream-dns.conf dest=/etc/dnsmasq.d/origin-upstream-dns.conf'

# 如果该节点需要配置上外网的功能, 运行以下命令. 
ansible prd-dms-node01.example.com -m copy -a 'src=/scripts/dnsmasq/gotointernet.conf dest=/etc/dnsmasq.d/gotointernet.conf'

# 重启节点的dns服务
ansible prd-dms-node01.example.com -m service -a 'name=dnsmasq state=restarted enabled=yes'

ansible prd-dms-node01.example.com -m service -a 'name=atomic-openshift-node state=restarted enabled=yes'

# 检测DNS解析
ansible prd-dms-node01.example.com -m shell -a 'nslookup docker-registry.default.svc'
ansible prd-dms-node01.example.com -m shell -a 'nslookup ecp.example.com'