Merge pull request #2948 from qeqar/remove-node-limit

move node selection from --limit to --extra-vars=node<nodename>"
This commit is contained in:
Rong Zhang 2018-07-03 18:41:57 +08:00 committed by GitHub
commit 32a6ca4fd6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 7 deletions

View file

@ -51,11 +51,26 @@ Remove nodes
You may want to remove **worker** nodes to your existing cluster. This can be done by re-running the `remove-node.yml` playbook. First, all nodes will be drained, then stop some kubernetes services and delete some certificates, and finally execute the kubectl command to delete these nodes. This can be combined with the add node function, This is generally helpful when doing something like autoscaling your clusters. Of course if a node is not working, you can remove the node and install it again. You may want to remove **worker** nodes to your existing cluster. This can be done by re-running the `remove-node.yml` playbook. First, all nodes will be drained, then stop some kubernetes services and delete some certificates, and finally execute the kubectl command to delete these nodes. This can be combined with the add node function, This is generally helpful when doing something like autoscaling your clusters. Of course if a node is not working, you can remove the node and install it again.
- Add worker nodes to the list under kube-node if you want to delete them (or utilize a [dynamic inventory](https://docs.ansible.com/ansible/intro_dynamic_inventory.html)). Add worker nodes to the list under kube-node if you want to delete them (or utilize a [dynamic inventory](https://docs.ansible.com/ansible/intro_dynamic_inventory.html)).
- Run the ansible-playbook command, substituting `remove-node.yml`:
```
ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \ ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \
--private-key=~/.ssh/private_key --private-key=~/.ssh/private_key
We support two ways to select the nodes:
- Use `--extra-vars "node=<nodename>,<nodename2>"` to select the node you want to delete.
```
ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \
--private-key=~/.ssh/private_key \
--extra-vars "node=nodename,nodename2"
```
or
- Use `--limit nodename,nodename2` to select the node
```
ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \
--private-key=~/.ssh/private_key \
--limit nodename,nodename2"
``` ```
Connecting to Kubernetes Connecting to Kubernetes

View file

@ -5,7 +5,7 @@
ansible_ssh_pipelining: true ansible_ssh_pipelining: true
gather_facts: true gather_facts: true
- hosts: etcd:k8s-cluster:vault:calico-rr - hosts: "{{ node | default('etcd:k8s-cluster:vault:calico-rr') }}"
vars_prompt: vars_prompt:
name: "delete_nodes_confirmation" name: "delete_nodes_confirmation"
prompt: "Are you sure you want to delete nodes state? Type 'yes' to delete nodes." prompt: "Are you sure you want to delete nodes state? Type 'yes' to delete nodes."
@ -22,7 +22,7 @@
roles: roles:
- { role: remove-node/pre-remove, tags: pre-remove } - { role: remove-node/pre-remove, tags: pre-remove }
- hosts: kube-node - hosts: "{{ node | default('kube-node') }}"
roles: roles:
- { role: kubespray-defaults } - { role: kubespray-defaults }
- { role: reset, tags: reset } - { role: reset, tags: reset }

View file

@ -3,7 +3,7 @@
- name: Delete node - name: Delete node
command: kubectl delete node {{ item }} command: kubectl delete node {{ item }}
with_items: with_items:
- "{{ groups['kube-node'] }}" - "{{ node.split(',') | default(groups['kube-node']) }}"
delegate_to: "{{ groups['kube-master']|first }}" delegate_to: "{{ groups['kube-master']|first }}"
run_once: true run_once: true
ignore_errors: yes ignore_errors: yes

View file

@ -9,7 +9,7 @@
--timeout {{ drain_timeout }} --timeout {{ drain_timeout }}
--delete-local-data {{ item }} --delete-local-data {{ item }}
with_items: with_items:
- "{{ groups['kube-node'] }}" - "{{ node.split(',') | default(groups['kube-node']) }}"
failed_when: false failed_when: false
delegate_to: "{{ groups['kube-master']|first }}" delegate_to: "{{ groups['kube-master']|first }}"
run_once: true run_once: true