diff --git a/kubetest2-tf/data/k8s-ansible/group_vars/masters b/kubetest2-tf/data/k8s-ansible/group_vars/masters index 893f2af..a38398d 100644 --- a/kubetest2-tf/data/k8s-ansible/group_vars/masters +++ b/kubetest2-tf/data/k8s-ansible/group_vars/masters @@ -1,2 +1,3 @@ --- -node_type: master \ No newline at end of file +node_type: master +smt_level: 8 diff --git a/kubetest2-tf/data/k8s-ansible/group_vars/workers b/kubetest2-tf/data/k8s-ansible/group_vars/workers index 06b3da6..c0a87c5 100644 --- a/kubetest2-tf/data/k8s-ansible/group_vars/workers +++ b/kubetest2-tf/data/k8s-ansible/group_vars/workers @@ -1,2 +1,3 @@ --- -node_type: worker \ No newline at end of file +node_type: worker +smt_level: 4 diff --git a/kubetest2-tf/data/k8s-ansible/install-k8s-ha.yml b/kubetest2-tf/data/k8s-ansible/install-k8s-ha.yml index 787ad7d..3681068 100644 --- a/kubetest2-tf/data/k8s-ansible/install-k8s-ha.yml +++ b/kubetest2-tf/data/k8s-ansible/install-k8s-ha.yml @@ -22,6 +22,13 @@ - download-k8s - install-k8s +- name: Set desired SMT levels on nodes + hosts: + - masters + - workers + roles: + - set-smt + - name: Install networking - calico hosts: masters roles: diff --git a/kubetest2-tf/data/k8s-ansible/patch-nodes.yaml b/kubetest2-tf/data/k8s-ansible/patch-nodes.yaml index fc24e56..db56b78 100644 --- a/kubetest2-tf/data/k8s-ansible/patch-nodes.yaml +++ b/kubetest2-tf/data/k8s-ansible/patch-nodes.yaml @@ -3,7 +3,7 @@ - masters - workers roles: - - role: update-node-os + - update-node-os - name: Reboot Kubernetes nodes one-by-one hosts: @@ -12,4 +12,11 @@ serial: 1 become: yes roles: - - role: reboot-sequentially + - reboot-sequentially + +- name: Set desired SMT levels on nodes + hosts: + - masters + - workers + roles: + - set-smt diff --git a/kubetest2-tf/data/k8s-ansible/roles/set-smt/tasks/main.yml b/kubetest2-tf/data/k8s-ansible/roles/set-smt/tasks/main.yml new file mode 100644 index 0000000..e749d91 --- /dev/null +++ b/kubetest2-tf/data/k8s-ansible/roles/set-smt/tasks/main.yml @@ -0,0 +1,17 @@ +- name: Resolve Kubernetes node name from inventory IP + shell: | + kubectl get nodes -o jsonpath="{range .items[*]}{.metadata.name} {.status.addresses[?(@.type=='InternalIP')].address}{'\n'}{end}" \ + --kubeconfig {{ kubeconfig_path }} | grep {{ inventory_hostname }} | awk '{print $1}' + register: node_name + delegate_to: "{{ groups['masters'][0] }}" + +- name: Add SMT level label to node + shell: | + kubectl label node/{{ node_name.stdout }} feature.node.kubernetes.io/ppc64le.smtlevel="{{ smt_level }}" --overwrite + delegate_to: "{{ groups['masters'][0] }}" + +- name: Set SMT level + shell: ppc64_cpu --smt={{ smt_level }} + +- name: Restart kubelet to update the node's capacity at the cluster level + shell: systemctl restart kubelet