瀏覽代碼

Merge pull request #262 from blesson-james/devel

Issue #242: Added checks to join compute nodes without redeploying cl…
Lucas A. Wilson 4 年之前
父節點
當前提交
71f87df514
共有 2 個文件被更改,包括 32 次插入15 次删除
  1. 17 7
      roles/k8s_start_manager/tasks/main.yml
  2. 15 8
      roles/k8s_start_workers/tasks/main.yml

+ 17 - 7
roles/k8s_start_manager/tasks/main.yml

@@ -22,17 +22,25 @@
   setup:
     filter: ansible_default_ipv4.address
 
-- name: Reset kubeadm
-  command: kubeadm reset -f
-  changed_when: true
+- name: Get K8s nodes status
+  command: kubectl get nodes
+  changed_when: false
   ignore_errors: True
+  register: k8s_nodes
   tags: init
 
-- name: Check K8s nodes status
-  command: kubectl get nodes
+- name: Get K8s ready compute nodes
+  shell: kubectl get node --selector='!node-role.kubernetes.io/master' | grep -v 'NotReady'
   changed_when: false
   ignore_errors: True
-  register: k8s_nodes
+  register: k8s_nodes_ready
+  tags: init
+
+- name: Get K8s not ready compute nodes
+  shell: kubectl get node --selector='!node-role.kubernetes.io/master' | grep 'NotReady'
+  changed_when: false
+  ignore_errors: True
+  register: k8s_nodes_not_ready
   tags: init
 
 - name: Initialize kubeadm
@@ -89,6 +97,8 @@
     hash:   "{{ K8S_MANAGER_CA_HASH.stdout }}"
     ip:     "{{ ansible_default_ipv4.address }}"
     k8s_nodes:  "{{ k8s_nodes.stdout }}"
+    k8s_nodes_ready:  "{{ k8s_nodes_ready.stdout }}"
+    k8s_nodes_not_ready: "{{ k8s_nodes_not_ready.stdout }}"
   tags: init
 
 - name: Print k8s token
@@ -172,4 +182,4 @@
 - name: Edge / Workstation Install allows pods to scheudle on manager
   command: kubectl taint nodes --all node-role.kubernetes.io/master-
   when: groups['manager'][0] == groups['compute'][0] and groups['compute']|length == 1
-  tags: init
+  tags: init

+ 15 - 8
roles/k8s_start_workers/tasks/main.yml

@@ -18,22 +18,29 @@
   changed_when: true
   tags: init
 
-- name: Reset kubeadm
-  command: kubeadm reset -f
-  changed_when: true
-  ignore_errors: True
-  tags: init
-
 - name: Get hostname
   command: hostname
   changed_when: true
   register: node_hostname
   tags: init
 
+- name: Reset kubeadm
+  command: kubeadm reset -f
+  changed_when: true
+  ignore_errors: True
+  when:
+    - groups['manager'][0] != groups['compute'][0]
+    - groups['compute']|length >= 1
+    - node_hostname.stdout in hostvars['K8S_TOKEN_HOLDER']['k8s_nodes_not_ready']
+  tags: init
+
 - name: Execute kubeadm join command
   shell: >
     kubeadm join --token={{ hostvars['K8S_TOKEN_HOLDER']['token'] }}
     --discovery-token-ca-cert-hash sha256:{{ hostvars['K8S_TOKEN_HOLDER']['hash'] }}
     {{ hostvars['K8S_TOKEN_HOLDER']['ip'] }}:{{ apiserver_bind_port }}
-  when: groups['manager'][0] != groups['compute'][0] and groups['compute']|length >= 1 and node_hostname.stdout not in hostvars['K8S_TOKEN_HOLDER']['k8s_nodes']
-  tags: init
+  when:
+    - groups['manager'][0] != groups['compute'][0]
+    - groups['compute']|length >= 1
+    - node_hostname.stdout not in hostvars['K8S_TOKEN_HOLDER']['k8s_nodes_ready']
+  tags: init