You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

354 lines
8.7 KiB

7 years ago
7 years ago
7 years ago
6 years ago
Fixes for CentOS 8 (#5213) * Fix python3-libselinux installation for RHEL/CentOS 8 In bootstrap-centos.yml we haven't gathered the facts, so #5127 couldn't work Minimum ansible version to run kubespray is 2.7.8, so ansible_distribution_major_version is defined an there is no need to default it Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> * Restart NetworkManager for RHEL/CentOS 8 network.service doesn't exist anymore # systemctl status network Unit network.service could not be found. Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> * Add module_hotfixes=True to docker / containerd yum repo config https://bugzilla.redhat.com/show_bug.cgi?id=1734081 https://bugzilla.redhat.com/show_bug.cgi?id=1756473 Without this setting you end up with the following error: # yum install docker-ce Failed to set locale, defaulting to C Last metadata expiration check: 0:03:21 ago on Thu Sep 26 22:00:05 2019. Error: Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best candidate for the job - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages) Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
5 years ago
Fixes for CentOS 8 (#5213) * Fix python3-libselinux installation for RHEL/CentOS 8 In bootstrap-centos.yml we haven't gathered the facts, so #5127 couldn't work Minimum ansible version to run kubespray is 2.7.8, so ansible_distribution_major_version is defined an there is no need to default it Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> * Restart NetworkManager for RHEL/CentOS 8 network.service doesn't exist anymore # systemctl status network Unit network.service could not be found. Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> * Add module_hotfixes=True to docker / containerd yum repo config https://bugzilla.redhat.com/show_bug.cgi?id=1734081 https://bugzilla.redhat.com/show_bug.cgi?id=1756473 Without this setting you end up with the following error: # yum install docker-ce Failed to set locale, defaulting to C Last metadata expiration check: 0:03:21 ago on Thu Sep 26 22:00:05 2019. Error: Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed - cannot install the best candidate for the job - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages) Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
5 years ago
  1. ---
  2. - name: reset | stop services
  3. service:
  4. name: "{{ item }}"
  5. state: stopped
  6. with_items:
  7. - kubelet
  8. failed_when: false
  9. tags:
  10. - services
  11. - name: reset | remove services
  12. file:
  13. path: "/etc/systemd/system/{{ item }}"
  14. state: absent
  15. with_items:
  16. - kubelet.service
  17. - calico-node.service
  18. - containerd.service.d/http-proxy.conf
  19. - crio.service.d/http-proxy.conf
  20. - k8s-certs-renew.service
  21. - k8s-certs-renew.timer
  22. register: services_removed
  23. tags:
  24. - services
  25. - containerd
  26. - crio
  27. - name: reset | remove docker dropins
  28. file:
  29. path: "/etc/systemd/system/docker.service.d/{{ item }}"
  30. state: absent
  31. with_items:
  32. - docker-dns.conf
  33. - docker-options.conf
  34. - http-proxy.conf
  35. - docker-orphan-cleanup.conf
  36. register: docker_dropins_removed
  37. tags:
  38. - docker
  39. - name: reset | systemctl daemon-reload # noqa 503
  40. systemd:
  41. daemon_reload: true
  42. when: services_removed.changed or docker_dropins_removed.changed
  43. - name: reset | remove all containers
  44. shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"
  45. args:
  46. executable: /bin/bash
  47. register: remove_all_containers
  48. retries: 4
  49. until: remove_all_containers.rc == 0
  50. delay: 5
  51. when: container_manager == "docker"
  52. tags:
  53. - docker
  54. - name: reset | restart docker if needed # noqa 503
  55. service:
  56. name: docker
  57. state: restarted
  58. when: docker_dropins_removed.changed and container_manager == "docker"
  59. tags:
  60. - docker
  61. - name: reset | check if crictl is present
  62. stat:
  63. path: "{{ bin_dir }}/crictl"
  64. get_attributes: no
  65. get_checksum: no
  66. get_mime: no
  67. register: crictl
  68. - name: reset | stop all cri containers
  69. shell: "set -o pipefail && {{ bin_dir }}/crictl ps -q | xargs -r {{ bin_dir }}/crictl -t 60s stop"
  70. args:
  71. executable: /bin/bash
  72. register: remove_all_cri_containers
  73. retries: 5
  74. until: remove_all_cri_containers.rc == 0
  75. delay: 5
  76. tags:
  77. - crio
  78. - containerd
  79. when:
  80. - crictl.stat.exists
  81. - container_manager in ["crio", "containerd"]
  82. ignore_errors: true
  83. - name: reset | force remove all cri containers
  84. command: "{{ bin_dir }}/crictl rm -a -f"
  85. register: remove_all_cri_containers
  86. retries: 5
  87. until: remove_all_cri_containers.rc == 0
  88. delay: 5
  89. tags:
  90. - crio
  91. - containerd
  92. when:
  93. - crictl.stat.exists
  94. - container_manager in ["crio", "containerd"]
  95. - deploy_container_engine|default(true)
  96. - name: reset | stop and disable crio service
  97. service:
  98. name: crio
  99. state: stopped
  100. enabled: false
  101. failed_when: false
  102. tags: [ crio ]
  103. when: container_manager == "crio"
  104. - name: reset | forcefully wipe CRI-O's container and image storage
  105. command: "crio wipe -f"
  106. failed_when: false
  107. tags: [ crio ]
  108. when: container_manager == "crio"
  109. - name: reset | stop all cri pods
  110. shell: "set -o pipefail && {{ bin_dir }}/crictl pods -q | xargs -r {{ bin_dir }}/crictl -t 60s stopp"
  111. args:
  112. executable: /bin/bash
  113. register: remove_all_cri_containers
  114. retries: 5
  115. until: remove_all_cri_containers.rc == 0
  116. delay: 5
  117. tags: [ containerd ]
  118. when:
  119. - crictl.stat.exists
  120. - container_manager == "containerd"
  121. ignore_errors: true
  122. - block:
  123. - name: reset | force remove all cri pods
  124. command: "{{ bin_dir }}/crictl rmp -a -f"
  125. register: remove_all_cri_containers
  126. retries: 5
  127. until: remove_all_cri_containers.rc == 0
  128. delay: 5
  129. tags: [ containerd ]
  130. when:
  131. - crictl.stat.exists
  132. - container_manager == "containerd"
  133. rescue:
  134. - name: reset | force remove all cri pods (rescue)
  135. shell: "ip netns list | cut -d' ' -f 1 | xargs -n1 ip netns delete && {{ bin_dir }}/crictl rmp -a -f"
  136. - name: reset | stop etcd services
  137. service:
  138. name: "{{ item }}"
  139. state: stopped
  140. with_items:
  141. - etcd
  142. - etcd-events
  143. failed_when: false
  144. tags:
  145. - services
  146. - name: reset | remove etcd services
  147. file:
  148. path: "/etc/systemd/system/{{ item }}.service"
  149. state: absent
  150. with_items:
  151. - etcd
  152. - etcd-events
  153. register: services_removed
  154. tags:
  155. - services
  156. - name: reset | gather mounted kubelet dirs # noqa 301
  157. shell: set -o pipefail && mount | grep /var/lib/kubelet/ | awk '{print $3}' | tac
  158. args:
  159. executable: /bin/bash
  160. warn: false
  161. check_mode: no
  162. register: mounted_dirs
  163. failed_when: false
  164. tags:
  165. - mounts
  166. - name: reset | unmount kubelet dirs # noqa 301
  167. command: umount -f {{ item }}
  168. with_items: "{{ mounted_dirs.stdout_lines }}"
  169. register: umount_dir
  170. when: mounted_dirs
  171. retries: 4
  172. until: umount_dir.rc == 0
  173. delay: 5
  174. tags:
  175. - mounts
  176. - name: flush iptables
  177. iptables:
  178. table: "{{ item }}"
  179. flush: yes
  180. with_items:
  181. - filter
  182. - nat
  183. - mangle
  184. - raw
  185. when: flush_iptables|bool
  186. tags:
  187. - iptables
  188. - name: Clear IPVS virtual server table
  189. command: "ipvsadm -C"
  190. when:
  191. - kube_proxy_mode == 'ipvs' and inventory_hostname in groups['k8s-cluster']
  192. - name: reset | check kube-ipvs0 network device
  193. stat:
  194. path: /sys/class/net/kube-ipvs0
  195. get_attributes: no
  196. get_checksum: no
  197. get_mime: no
  198. register: kube_ipvs0
  199. - name: reset | Remove kube-ipvs0
  200. command: "ip link del kube-ipvs0"
  201. when:
  202. - kube_proxy_mode == 'ipvs'
  203. - kube_ipvs0.stat.exists
  204. - name: reset | check nodelocaldns network device
  205. stat:
  206. path: /sys/class/net/nodelocaldns
  207. get_attributes: no
  208. get_checksum: no
  209. get_mime: no
  210. register: nodelocaldns_device
  211. - name: reset | Remove nodelocaldns
  212. command: "ip link del nodelocaldns"
  213. when:
  214. - enable_nodelocaldns|default(false)|bool
  215. - nodelocaldns_device.stat.exists
  216. - name: reset | delete some files and directories
  217. file:
  218. path: "{{ item }}"
  219. state: absent
  220. with_items:
  221. - "{{ kube_config_dir }}"
  222. - /var/lib/kubelet
  223. - "{{ ansible_env.HOME | default('/root') }}/.kube"
  224. - "{{ ansible_env.HOME | default('/root') }}/.helm"
  225. - "{{ etcd_data_dir }}"
  226. - "{{ etcd_events_data_dir }}"
  227. - "{{ etcd_config_dir }}"
  228. - /var/log/calico
  229. - /etc/cni
  230. - "{{ nginx_config_dir }}"
  231. - /etc/dnsmasq.d
  232. - /etc/dnsmasq.conf
  233. - /etc/dnsmasq.d-available
  234. - /etc/etcd.env
  235. - /etc/calico
  236. - /etc/NetworkManager/conf.d/calico.conf
  237. - /etc/NetworkManager/conf.d/k8s.conf
  238. - /etc/weave.env
  239. - /opt/cni
  240. - /etc/dhcp/dhclient.d/zdnsupdate.sh
  241. - /etc/dhcp/dhclient-exit-hooks.d/zdnsupdate
  242. - /run/flannel
  243. - /etc/flannel
  244. - /run/kubernetes
  245. - /usr/local/share/ca-certificates/etcd-ca.crt
  246. - /usr/local/share/ca-certificates/kube-ca.crt
  247. - /etc/ssl/certs/etcd-ca.pem
  248. - /etc/ssl/certs/kube-ca.pem
  249. - /etc/pki/ca-trust/source/anchors/etcd-ca.crt
  250. - /etc/pki/ca-trust/source/anchors/kube-ca.crt
  251. - /var/log/pods/
  252. - "{{ bin_dir }}/kubelet"
  253. - "{{ bin_dir }}/etcd-scripts"
  254. - "{{ bin_dir }}/etcd"
  255. - "{{ bin_dir }}/etcd-events"
  256. - "{{ bin_dir }}/etcdctl"
  257. - "{{ bin_dir }}/kubernetes-scripts"
  258. - "{{ bin_dir }}/kubectl"
  259. - "{{ bin_dir }}/kubeadm"
  260. - "{{ bin_dir }}/helm"
  261. - "{{ bin_dir }}/calicoctl"
  262. - "{{ bin_dir }}/calicoctl.sh"
  263. - "{{ bin_dir }}/calico-upgrade"
  264. - "{{ bin_dir }}/weave"
  265. - "{{ bin_dir }}/crictl"
  266. - "{{ bin_dir }}/netctl"
  267. - "{{ bin_dir }}/k8s-certs-renew.sh"
  268. - /var/lib/cni
  269. - /etc/openvswitch
  270. - /run/openvswitch
  271. - /var/lib/kube-router
  272. - /var/lib/calico
  273. - /etc/cilium
  274. - /run/calico
  275. - /etc/bash_completion.d/kubectl.sh
  276. - /etc/bash_completion.d/crictl
  277. ignore_errors: yes
  278. tags:
  279. - files
  280. - name: reset | remove dns settings from dhclient.conf
  281. blockinfile:
  282. path: "{{ item }}"
  283. state: absent
  284. marker: "# Ansible entries {mark}"
  285. failed_when: false
  286. with_items:
  287. - /etc/dhclient.conf
  288. - /etc/dhcp/dhclient.conf
  289. tags:
  290. - files
  291. - dns
  292. - name: reset | remove host entries from /etc/hosts
  293. blockinfile:
  294. path: "/etc/hosts"
  295. state: absent
  296. marker: "# Ansible inventory hosts {mark}"
  297. tags:
  298. - files
  299. - dns
  300. - name: reset | include file with reset tasks specific to the network_plugin if exists
  301. include_tasks: "{{ (role_path + '/../network_plugin/' + kube_network_plugin + '/tasks/reset.yml') | realpath }}"
  302. when:
  303. - kube_network_plugin in ['flannel', 'cilium', 'kube-router', 'calico']
  304. tags:
  305. - network
  306. - name: reset | Restart network
  307. service:
  308. name: >-
  309. {% if ansible_os_family == "RedHat" -%}
  310. {%- if ansible_distribution_major_version|int == 8 or is_fedora_coreos -%}
  311. NetworkManager
  312. {%- else -%}
  313. network
  314. {%- endif -%}
  315. {%- elif ansible_distribution == "Ubuntu" and ansible_distribution_release in ["bionic", "focal"] -%}
  316. systemd-networkd
  317. {%- elif ansible_os_family == "Debian" -%}
  318. networking
  319. {%- endif %}
  320. state: restarted
  321. when:
  322. - ansible_os_family not in ["Flatcar Container Linux by Kinvolk"]
  323. - reset_restart_network
  324. tags:
  325. - services
  326. - network