#!/bin/bash POD_CIDR="100.64.0.0\/14" CTL_MGR_CFG=/etc/kubernetes/manifests/kube-controller-manager.yaml kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/calicoctl.yaml echo "Updating kube controller manager params..." sed -i "s/--cluster-cidr=.*/--cluster-cidr=$POD_CIDR/g" $CTL_MGR_CFG echo "Updating kubeadm configmap..." kubectl get configmap kubeadm-config -o yaml -n kube-system | sed "s/ clusterCIDR: 192.168.0.0\/16/ clusterCIDR: $POD_CIDR/g" | sed "s/ podSubnet: 192.168.0.0\/16/ podSubnet: $POD_CIDR/g" | kubectl apply -f - echo "Updating kube-proxy configmap..." kubectl get configmap kube-proxy -o yaml -n kube-system | sed "s/ clusterCIDR: 192.168.0.0\/16/ clusterCIDR: $POD_CIDR/g" | kubectl apply -f - echo "Recreating kube-proxy pod..." kubectl get pod -n kube-system | grep kube-proxy | awk '{print $1}' | xargs -r -L1 kubectl delete pod -n kube-system echo "update calico config" kubectl get daemonsets -n kube-system calico-node -o yaml | sed "s/value: 192.168.0.0\/16/value: $POD_CIDR/g" | kubectl apply -f - echo "Recreating calico-node pod..." kubectl get pod -n kube-system | grep calico-node | awk '{print $1}' | xargs -r -L1 kubectl delete pod -n kube-system echo "Updating nodes..." kubectl get nodes -o yaml | sed "/podCIDR: 192.168./d" > nodes.yaml kubectl delete -f nodes.yaml kubectl create -f nodes.yaml echo "Updating calico data ..." kubectl exec -ti -n kube-system calicoctl -- /calicoctl get ipPool default-ipv4-ippool -o yaml | sed "s/ cidr: 192.168.0.0\/16/ cidr: $POD_CIDR/g" > ippool.yaml kubectl exec -ti -n kube-system calicoctl -- /calicoctl delete ipPool default-ipv4-ippool cat ippool.yaml | kubectl exec -ti -n kube-system calicoctl -- /calicoctl apply -f - echo "Updating old pod..." kubectl get pod --all-namespaces -o wide | grep "192.168" | awk '{print $2" -n "$1}' | xargs -r -L1 kubectl delete pod kubectl get pod --all-namespaces -owide -w