2015-10-03 20:19:50 +00:00
|
|
|
---
|
2018-01-29 11:37:48 +00:00
|
|
|
- import_tasks: facts.yml
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- facts
|
2016-12-13 10:43:06 +00:00
|
|
|
|
2018-01-29 11:37:48 +00:00
|
|
|
- import_tasks: pre_upgrade.yml
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- kubelet
|
2017-04-03 13:50:17 +00:00
|
|
|
|
2017-04-19 16:00:44 +00:00
|
|
|
- name: Ensure /var/lib/cni exists
|
|
|
|
file:
|
|
|
|
path: /var/lib/cni
|
|
|
|
state: directory
|
|
|
|
mode: 0755
|
|
|
|
|
2018-01-29 11:37:48 +00:00
|
|
|
- import_tasks: install.yml
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- kubelet
|
2016-02-11 22:08:16 +00:00
|
|
|
|
2019-05-08 20:38:36 +00:00
|
|
|
- import_tasks: loadbalancer/nginx-proxy.yml
|
2019-04-17 15:42:03 +00:00
|
|
|
when:
|
|
|
|
- not is_kube_master
|
|
|
|
- loadbalancer_apiserver_localhost
|
|
|
|
- loadbalancer_apiserver_type == 'nginx'
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- nginx
|
2016-09-28 11:05:08 +00:00
|
|
|
|
2019-05-08 20:38:36 +00:00
|
|
|
- import_tasks: loadbalancer/haproxy.yml
|
2019-04-17 15:42:03 +00:00
|
|
|
when:
|
|
|
|
- not is_kube_master
|
|
|
|
- loadbalancer_apiserver_localhost
|
|
|
|
- loadbalancer_apiserver_type == 'haproxy'
|
2019-04-10 12:56:18 +00:00
|
|
|
tags:
|
|
|
|
- haproxy
|
|
|
|
|
2017-02-03 15:26:30 +00:00
|
|
|
- name: Ensure nodePort range is reserved
|
|
|
|
sysctl:
|
|
|
|
name: net.ipv4.ip_local_reserved_ports
|
|
|
|
value: "{{ kube_apiserver_node_port_range }}"
|
|
|
|
sysctl_set: yes
|
2018-04-27 15:50:58 +00:00
|
|
|
sysctl_file: "{{ sysctl_file_path }}"
|
2017-02-03 15:26:30 +00:00
|
|
|
state: present
|
|
|
|
reload: yes
|
|
|
|
when: kube_apiserver_node_port_range is defined
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
2017-02-03 15:26:30 +00:00
|
|
|
|
2020-07-28 08:39:08 +00:00
|
|
|
- name: Verify if br_netfilter module exists
|
|
|
|
command: "modinfo br_netfilter"
|
2018-06-12 18:30:18 +00:00
|
|
|
environment:
|
2019-05-02 21:24:21 +00:00
|
|
|
PATH: "{{ ansible_env.PATH }}:/sbin" # Make sure we can workaround RH's conservative path management
|
2017-09-06 12:11:51 +00:00
|
|
|
register: modinfo_br_netfilter
|
|
|
|
failed_when: modinfo_br_netfilter.rc not in [0, 1]
|
|
|
|
changed_when: false
|
|
|
|
|
2018-12-18 09:39:25 +00:00
|
|
|
- name: Verify br_netfilter module path exists
|
|
|
|
file:
|
|
|
|
path: /etc/modules-load.d
|
|
|
|
state: directory
|
|
|
|
|
2017-09-06 12:11:51 +00:00
|
|
|
- name: Enable br_netfilter module
|
|
|
|
modprobe:
|
|
|
|
name: br_netfilter
|
|
|
|
state: present
|
|
|
|
when: modinfo_br_netfilter.rc == 0
|
|
|
|
|
2017-10-13 09:50:29 +00:00
|
|
|
- name: Persist br_netfilter module
|
|
|
|
copy:
|
|
|
|
dest: /etc/modules-load.d/kubespray-br_netfilter.conf
|
|
|
|
content: br_netfilter
|
|
|
|
when: modinfo_br_netfilter.rc == 0
|
|
|
|
|
2017-09-06 12:11:51 +00:00
|
|
|
# kube-proxy needs net.bridge.bridge-nf-call-iptables enabled when found if br_netfilter is not a module
|
|
|
|
- name: Check if bridge-nf-call-iptables key exists
|
|
|
|
command: "sysctl net.bridge.bridge-nf-call-iptables"
|
|
|
|
failed_when: false
|
|
|
|
changed_when: false
|
|
|
|
register: sysctl_bridge_nf_call_iptables
|
|
|
|
|
|
|
|
- name: Enable bridge-nf-call tables
|
|
|
|
sysctl:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: present
|
2018-04-27 15:50:58 +00:00
|
|
|
sysctl_file: "{{ sysctl_file_path }}"
|
2019-05-08 20:38:36 +00:00
|
|
|
value: "1"
|
2017-09-06 12:11:51 +00:00
|
|
|
reload: yes
|
2017-12-12 17:09:27 +00:00
|
|
|
when: sysctl_bridge_nf_call_iptables.rc == 0
|
2017-09-06 12:11:51 +00:00
|
|
|
with_items:
|
|
|
|
- net.bridge.bridge-nf-call-iptables
|
|
|
|
- net.bridge.bridge-nf-call-arptables
|
|
|
|
- net.bridge.bridge-nf-call-ip6tables
|
|
|
|
|
2020-07-22 06:58:25 +00:00
|
|
|
- name: Modprobe Kernel Module for IPVS
|
2018-01-29 05:15:32 +00:00
|
|
|
modprobe:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: present
|
|
|
|
with_items:
|
|
|
|
- ip_vs
|
|
|
|
- ip_vs_rr
|
|
|
|
- ip_vs_wrr
|
|
|
|
- ip_vs_sh
|
2018-08-14 12:13:44 +00:00
|
|
|
when: kube_proxy_mode == 'ipvs'
|
2018-01-29 05:15:32 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
|
|
|
|
2018-12-12 13:33:54 +00:00
|
|
|
- name: Modprobe nf_conntrack_ipv4 for kernels < 4.19
|
|
|
|
modprobe:
|
|
|
|
name: nf_conntrack_ipv4
|
|
|
|
state: present
|
|
|
|
register: enable_nf_conntrack
|
2020-06-16 07:34:06 +00:00
|
|
|
when:
|
|
|
|
- ansible_kernel.split('.')[0:3] | join('.') < '4.19'
|
|
|
|
- kube_proxy_mode == 'ipvs'
|
2019-04-09 12:25:06 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
2018-12-12 13:33:54 +00:00
|
|
|
|
|
|
|
- name: Modprobe nf_conntrack for kernels >= 4.19
|
|
|
|
modprobe:
|
|
|
|
name: nf_conntrack
|
|
|
|
state: present
|
2018-12-18 08:34:19 +00:00
|
|
|
when:
|
2020-06-16 07:34:06 +00:00
|
|
|
- ansible_kernel.split('.')[0:3] | join('.') >= '4.19'
|
2018-12-12 13:33:54 +00:00
|
|
|
- kube_proxy_mode == 'ipvs'
|
2019-04-09 12:25:06 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
2018-12-12 13:33:54 +00:00
|
|
|
|
2018-04-04 10:18:51 +00:00
|
|
|
- name: Persist ip_vs modules
|
|
|
|
copy:
|
|
|
|
dest: /etc/modules-load.d/kube_proxy-ipvs.conf
|
2018-04-04 15:05:27 +00:00
|
|
|
content: |
|
|
|
|
ip_vs
|
|
|
|
ip_vs_rr
|
|
|
|
ip_vs_wrr
|
|
|
|
ip_vs_sh
|
2018-12-12 13:33:54 +00:00
|
|
|
{% if enable_nf_conntrack is failed -%}
|
|
|
|
nf_conntrack
|
|
|
|
{%- else -%}
|
2018-04-04 15:05:27 +00:00
|
|
|
nf_conntrack_ipv4
|
2018-12-12 13:33:54 +00:00
|
|
|
{%- endif -%}
|
2018-04-04 10:18:51 +00:00
|
|
|
when: kube_proxy_mode == 'ipvs'
|
|
|
|
tags:
|
|
|
|
- kube-proxy
|
|
|
|
|
2018-10-16 14:15:05 +00:00
|
|
|
- name: Purge proxy manifest for kubeadm or if proxy services being provided by other means, e.g. network_plugin
|
2017-09-26 09:38:58 +00:00
|
|
|
file:
|
|
|
|
path: "{{ kube_manifest_dir }}/kube-proxy.manifest"
|
|
|
|
state: absent
|
2018-10-16 14:15:05 +00:00
|
|
|
when:
|
2018-12-06 10:33:38 +00:00
|
|
|
- kube_proxy_remove
|
2018-10-16 14:15:05 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
|
|
|
|
2019-11-28 13:41:03 +00:00
|
|
|
- name: Set command for kube-proxy cleanup
|
|
|
|
set_fact:
|
|
|
|
kube_proxy_cleanup_command: >-
|
|
|
|
{%- if container_manager in ['docker', 'crio'] %}
|
2020-03-13 12:32:39 +00:00
|
|
|
{{ docker_bin_dir }}/docker run --rm --privileged -v /lib/modules:/lib/modules {{ kube_proxy_image_repo }}:{{ kube_version }} kube-proxy --cleanup
|
2019-11-28 13:41:03 +00:00
|
|
|
{%- elif container_manager == "containerd" %}
|
|
|
|
ctr run --rm --mount type=bind,src=/lib/modules,dst=/lib/modules,options=rbind:rw {{ kube_proxy_image_repo }}:{{ kube_version }} kube-proxy --cleanup
|
|
|
|
{%- endif %}
|
|
|
|
when:
|
|
|
|
- kube_proxy_remove
|
|
|
|
tags:
|
|
|
|
- kube-proxy
|
|
|
|
|
|
|
|
- name: Ensure kube-proxy container is pulled for containerd
|
|
|
|
command: "{{ bin_dir }}/crictl pull {{ kube_proxy_image_repo }}:{{ kube_version }}"
|
2018-10-16 14:15:05 +00:00
|
|
|
when:
|
|
|
|
- kube_proxy_remove
|
2019-11-28 13:41:03 +00:00
|
|
|
- container_manager == "containerd"
|
|
|
|
tags:
|
|
|
|
- kube-proxy
|
|
|
|
|
|
|
|
- name: Cleanup kube-proxy leftovers from node
|
|
|
|
command: "{{ kube_proxy_cleanup_command }}"
|
2018-10-16 14:15:05 +00:00
|
|
|
# `kube-proxy --cleanup`, being Ok as per shown WARNING, still returns 255 from above run (?)
|
|
|
|
ignore_errors: true
|
2019-11-28 13:41:03 +00:00
|
|
|
when:
|
|
|
|
- kube_proxy_remove
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- kube-proxy
|
2017-09-26 09:38:58 +00:00
|
|
|
|
2019-05-08 20:38:36 +00:00
|
|
|
- include_tasks: "cloud-credentials/{{ cloud_provider }}-credential-check.yml"
|
2018-03-31 00:24:57 +00:00
|
|
|
when:
|
|
|
|
- cloud_provider is defined
|
|
|
|
- cloud_provider in [ 'openstack', 'azure', 'vsphere' ]
|
|
|
|
tags:
|
|
|
|
- cloud-provider
|
|
|
|
- facts
|
|
|
|
|
2019-10-09 09:19:49 +00:00
|
|
|
- name: Test if openstack_cacert is a base64 string
|
|
|
|
set_fact:
|
2020-07-30 20:15:17 +00:00
|
|
|
openstack_cacert_is_base64: "{% if openstack_cacert | search ('^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$') %}true{% else %}false{% endif %}"
|
2019-10-09 09:19:49 +00:00
|
|
|
when:
|
|
|
|
- cloud_provider is defined
|
|
|
|
- cloud_provider == 'openstack'
|
|
|
|
- openstack_cacert is defined
|
|
|
|
- openstack_cacert | length > 0
|
|
|
|
|
|
|
|
|
2018-08-17 03:31:21 +00:00
|
|
|
- name: Write cacert file
|
|
|
|
copy:
|
2019-10-09 09:19:49 +00:00
|
|
|
src: "{{ openstack_cacert if not openstack_cacert_is_base64 else omit }}"
|
|
|
|
content: "{{ openstack_cacert | b64decode if openstack_cacert_is_base64 else omit }}"
|
2018-08-17 03:31:21 +00:00
|
|
|
dest: "{{ kube_config_dir }}/openstack-cacert.pem"
|
|
|
|
group: "{{ kube_cert_group }}"
|
|
|
|
mode: 0640
|
|
|
|
when:
|
|
|
|
- cloud_provider is defined
|
2018-09-06 11:05:50 +00:00
|
|
|
- cloud_provider == 'openstack'
|
2018-08-17 03:31:21 +00:00
|
|
|
- openstack_cacert is defined
|
2019-08-15 12:50:34 +00:00
|
|
|
- openstack_cacert | length > 0
|
2018-08-17 03:31:21 +00:00
|
|
|
tags:
|
|
|
|
- cloud-provider
|
|
|
|
|
2018-03-28 13:26:36 +00:00
|
|
|
- name: Write cloud-config
|
|
|
|
template:
|
2019-05-08 20:38:36 +00:00
|
|
|
src: "cloud-configs/{{ cloud_provider }}-cloud-config.j2"
|
2018-03-28 13:26:36 +00:00
|
|
|
dest: "{{ kube_config_dir }}/cloud_config"
|
|
|
|
group: "{{ kube_cert_group }}"
|
|
|
|
mode: 0640
|
|
|
|
when:
|
|
|
|
- cloud_provider is defined
|
2018-09-20 14:31:28 +00:00
|
|
|
- cloud_provider in [ 'openstack', 'azure', 'vsphere', 'aws' ]
|
2020-03-20 20:54:08 +00:00
|
|
|
notify: Node | restart kubelet
|
2018-03-28 13:26:36 +00:00
|
|
|
tags:
|
|
|
|
- cloud-provider
|
|
|
|
|
2019-05-08 20:38:36 +00:00
|
|
|
- import_tasks: kubelet.yml
|
2017-10-05 07:43:04 +00:00
|
|
|
tags:
|
|
|
|
- kubelet
|
2019-10-09 09:19:49 +00:00
|
|
|
- kubeadm
|