Browse Source

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

move node selection from --limit to --extra-vars=node<nodename>"
pull/2959/head
Rong Zhang 6 years ago
committed by GitHub
parent
commit
32a6ca4fd6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 7 deletions
  1. 21
      docs/getting-started.md
  2. 4
      remove-node.yml
  3. 2
      roles/remove-node/post-remove/tasks/main.yml
  4. 2
      roles/remove-node/pre-remove/tasks/main.yml

21
docs/getting-started.md

@ -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)).
- Run the ansible-playbook command, substituting `remove-node.yml`:
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)).
ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \
--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 \ ansible-playbook -i inventory/mycluster/hosts.ini remove-node.yml -b -v \
--private-key=~/.ssh/private_key
--private-key=~/.ssh/private_key \
--limit nodename,nodename2"
``` ```
Connecting to Kubernetes Connecting to Kubernetes

4
remove-node.yml

@ -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 }

2
roles/remove-node/post-remove/tasks/main.yml

@ -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

2
roles/remove-node/pre-remove/tasks/main.yml

@ -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

Loading…
Cancel
Save