diff --git a/roles/kubernetes/node/defaults/main.yml b/roles/kubernetes/node/defaults/main.yml index 9d21d50147c76f287a80f529ae3e396730dd04a7..fb9fdf32985303a080c299af76014ccfa87c315c 100644 --- a/roles/kubernetes/node/defaults/main.yml +++ b/roles/kubernetes/node/defaults/main.yml @@ -248,3 +248,7 @@ kube_proxy_ipvs_modules: - ip_vs_sh - ip_vs_wlc - ip_vs_lc + +# Ensure IPVS required kernel module is picked based on Linux Kernel version +# in reference to: https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md#run-kube-proxy-in-ipvs-mode +conntrack_module: "{{ ansible_kernel is version_compare('4.19', '>=') | ternary('nf_conntrack', 'nf_conntrack_ipv4') }}" diff --git a/roles/kubernetes/node/tasks/main.yml b/roles/kubernetes/node/tasks/main.yml index 7eb5b2e597d60c6379cc69a0b4a1af5d51272e6b..6af9c776f9ccbfae115f7829a92acca03e8de29d 100644 --- a/roles/kubernetes/node/tasks/main.yml +++ b/roles/kubernetes/node/tasks/main.yml @@ -117,21 +117,21 @@ tags: - kube-proxy -- name: Modprobe nf_conntrack_ipv4 +- name: "Modprobe {{ conntrack_module }}" community.general.modprobe: - name: nf_conntrack_ipv4 + name: "{{ conntrack_module }}" state: present - register: modprobe_nf_conntrack_ipv4 + register: modprobe_conntrack_module ignore_errors: true # noqa ignore-errors when: - kube_proxy_mode == 'ipvs' tags: - kube-proxy -- name: Add nf_conntrack_ipv4 kube-proxy ipvs module list +- name: "Add {{ conntrack_module }} kube-proxy ipvs module list" set_fact: - kube_proxy_ipvs_modules: "{{ kube_proxy_ipvs_modules + ['nf_conntrack_ipv4'] }}" - when: modprobe_nf_conntrack_ipv4 is success + kube_proxy_ipvs_modules: "{{ kube_proxy_ipvs_modules + [conntrack_module] }}" + when: modprobe_conntrack_module is success tags: - kube-proxy