--- - name: Install Containerd include_role: name: containerd when: - kubernetes_cri == "containerd" #register: kubernetes_cri_changed #- name: Restart kubelet after kubernetes cri installation # service: # name: kubelet # status: restarted # when: # - kubernetes_cri_changed is changed - name: Remove swapfile from /etc/fstab mount: name: swap fstype: swap state: absent - name: Ensuring /etc/systemd/system/kubelet.service.d Folder Exists file: path: "/etc/systemd/system/kubelet.service.d" state: "directory" group: root owner: root mode: 0755 - name: Configure kubelet service template: src: "etc/{{ item }}.j2" dest: "/etc/{{ item }}" group: root owner: root mode: 0644 with_items: - "systemd/system/kubelet.service.d/0-containerd.conf" - "sysconfig/kubelet" - name: Enable kubelet on boot service: name: kubelet state: started enabled: yes # Install API loadbalancer - include_tasks: "load_balancer.yml" when: - kubernetes_master == true - groups['KubernetesMaster'] | length > 1 - stat: path=/etc/kubernetes/admin.conf register: st changed_when: False - name: Create KubernetesMasterConfigured group group_by: key=KubernetesMasterConfigured when: - st.stat.exists - name: Retreive kubeadm Major version shell: kubeadm version | sed 's/.*{Major:"\([0-9]\)".*/\1/' register: kubeadm_version_major - name: Retreive kubeadm Minor version shell: kubeadm version | sed -e 's/.* Minor:"\([0-9]*\)".*/\1/' register: kubeadm_version_minor - name: Deploy initial kubeadm config template: src: kubeadmin-config.yaml.j2 dest: /root/kubeadmin-config.yaml owner: root group: root mode: 600 when: - groups['KubernetesMasterConfigured'] is not defined - groups['KubernetesMasters'][0] == ansible_hostname - kubeadm_version_major.rc == 1 - kubeadm_version_minor.rc > 15 - name: Init Kubernetes on {{ groups['KubernetesMasters'][0] }} command: kubeadm init --config=kubeadm-config.yaml --upload-certs --apiserver-advertise-address={{ ansible_host }} --ignore-preflight-errors=SystemVerification when: - groups['KubernetesMasterConfigured'] is not defined - groups['KubernetesMasters'][0] == ansible_hostname - kubeadm_version_major.rc == 1 - kubeadm_version_minor.rc > 15 - name: Create KubernetesMasterConfigured group group_by: key=KubernetesMasterConfigured when: - groups['KubernetesMasterConfigured'] is not defined - groups['KubernetesMasters'][0] == ansible_hostname - name: Test if server node already included command: kubectl get nodes {{ ansible_hostname | lower }} delegate_to: "{{ groups['KubernetesMasterConfigured'][0] }}" register: server_enrolled changed_when: False ignore_errors: yes - name: Deploy kubeadm config template: src: kubeadmin-config.yaml.j2 dest: /root/kubeadmin-config.yaml owner: root group: root mode: 600 when: - not groups['KubernetesMasters'][0] == ansible_hostname - kubeadm_version_major.rc == 1 - kubeadm_version_minor.rc > 15 - server_enrolled.rc == 1 # Retreive token and hash to join from master - name: Join '{{ ansible_hostname }}' to Kubernetes cluster command: kubeadm init --config=kubeadm-config.yaml when: - groups['KubernetesMasterConfigured'] is not defined - groups['KubernetesMasters'][0] == ansible_hostname - kubeadm_version_major.rc == 1 - kubeadm_version_minor.rc > 15 - server_enrolled.rc == 1 #- name: Extend Master services on unconfigured hosts # include_tasks: "add_master.yml" # when: # - groups['KubernetesMaster'] | length > 1 - name: Check if a node is still tainted command: kubectl get nodes '{{ ansible_host }}' -o jsonpath='{.spec.taints}' when: kubernetes_master_taint register: current_taint - name: taint the machine if needed command: kubectl taint nodes --all node-role.kubernetes.io/master- when: kubernetes_master_taint == true and current_taint.stdout # # At this point, we have a kubernetes up and running, but ready for it # - name: Make /root/.kube directory file: path="/root/.kube" owner=root group=root mode=0700 state=directory - name: Copy certificat file on copy: src=/etc/kubernetes/admin.conf dest=/root/.kube/config remote_src=yes owner=root group=root mode=0600