--- - name: Ensure that user manifests directory exists file: path: "{{ kubernetes_user_manifests_path }}/kubernetes" state: directory recurse: yes tags: [init, cni] - name: Apply kube-proxy nodeselector block: - name: Copy kube-proxy daemonset nodeselector patch copy: src: nodeselector-os-linux-patch.json dest: "{{ kubernetes_user_manifests_path }}/nodeselector-os-linux-patch.json" # Due to https://github.com/kubernetes/kubernetes/issues/58212 we cannot rely on exit code for "kubectl patch" - name: Check current nodeselector for kube-proxy daemonset shell: "{{bin_dir}}/kubectl --kubeconfig {{ kube_config_dir }}/admin.conf get ds kube-proxy --namespace=kube-system -o jsonpath='{.spec.template.spec.nodeSelector.beta.kubernetes.io/os}'" register: current_kube_proxy_state - name: Apply nodeselector patch for kube-proxy daemonset shell: "{{bin_dir}}/kubectl --kubeconfig {{ kube_config_dir }}/admin.conf patch ds kube-proxy --namespace=kube-system --type=strategic -p \"$(cat nodeselector-os-linux-patch.json)\"" args: chdir: "{{ kubernetes_user_manifests_path }}" register: patch_kube_proxy_state when: current_kube_proxy_state.stdout | trim | lower != "linux" - debug: msg={{ patch_kube_proxy_state.stdout_lines }} when: patch_kube_proxy_state is not skipped - debug: msg={{ patch_kube_proxy_state.stderr_lines }} when: patch_kube_proxy_state is not skipped tags: init when: - not kube_proxy_remove