kubeasz/tools/change_k8s_network.yml

110 lines
3.2 KiB
YAML
Raw Normal View History

- hosts:
- kube-master
- new-master
- kube-node
- new-node
tasks:
- name: 获取所有已经创建的POD信息
command: "{{ bin_dir }}/kubectl get daemonset -n kube-system"
register: pod_info
run_once: true
- name: 删除原network插件calico部署
shell: "{{ bin_dir }}/kubectl delete -f /opt/kube/kube-system/calico/ || \
{{ bin_dir }}/kubectl delete -f /root/local/kube-system/calico/"
ignore_errors: true
run_once: true
when: '"calico" in pod_info.stdout'
- name: 删除原network插件flannel部署
shell: "{{ bin_dir }}/kubectl delete -f /opt/kube/kube-system/flannel/ || \
{{ bin_dir }}/kubectl delete -f /root/local/kube-system/flannel/"
ignore_errors: true
run_once: true
when: '"flannel" in pod_info.stdout'
- name: 删除原network插件kube-router部署
shell: "{{ bin_dir }}/kubectl delete -f /opt/kube/kube-system/kube-router/ || \
{{ bin_dir }}/kubectl delete -f /root/local/kube-system/kube-router/"
ignore_errors: true
run_once: true
when: '"kube-router" in pod_info.stdout'
- name: 清理kube-router相关
shell: "{{ bin_dir }}/docker run --privileged --net=host cloudnativelabs/kube-router --cleanup-config"
ignore_errors: true
when: '"kube-router" in pod_info.stdout'
- name: 停止 kube-node 相关服务
service: name={{ item }} state=stopped
with_items:
- kubelet
- kube-proxy
ignore_errors: true
- name: 清理calico残留路由
shell: "for rt in `ip route|grep bird|sed 's/blackhole//'|awk '{print $1}'`;do ip route del $rt;done;"
when: '"calico" in pod_info.stdout'
ignore_errors: true
- name: 清理 kube-proxy产生的iptables规则
shell: "{{ bin_dir }}/kube-proxy --cleanup"
ignore_errors: true
- name: 清理目录和文件
file: name={{ item }} state=absent
with_items:
- "/etc/cni/"
- "/run/flannel/"
- "/etc/calico/"
- "/var/run/calico/"
- "/var/log/calico/"
- "/var/lib/cni/"
- "/var/lib/kube-router/"
- "/opt/kube/kube-system/"
- name: 清理网络
shell: "ip link del tunl0; \
ip link del flannel.1; \
ip link del cni0; \
ip link del mynet0; \
ip link del kube-bridge; \
ip link del dummy0; \
systemctl restart networking; \
systemctl restart network"
ignore_errors: true
- name: 开启 kube-node 相关服务
service: name={{ item }} state=started enabled=yes
with_items:
- kubelet
- kube-proxy
ignore_errors: true
- hosts:
- lb
tasks:
- name: 重启lb的keepalived服务
service: name=keepalived state=restarted
- hosts:
- kube-master
- new-master
- kube-node
- new-node
# 安装新的网络插件
roles:
- { role: calico, when: "CLUSTER_NETWORK == 'calico'" }
- { role: flannel, when: "CLUSTER_NETWORK == 'flannel'" }
- { role: kube-router, when: "CLUSTER_NETWORK == 'kube-router'" }
- hosts: deploy
tasks:
# 删除所有运行pod由controller自动重建
- name: 重启所有pod
shell: "for NS in $({{ bin_dir }}/kubectl get ns|awk 'NR>1{print $1}'); \
do {{ bin_dir }}/kubectl delete pod --all -n $NS; done;"
ignore_errors: true
run_once: true