Last active
June 27, 2019 08:18
-
-
Save wavezhang/199c2d1e2a19d10bf2168b71b7970fe7 to your computer and use it in GitHub Desktop.
change k8s pod cidr without reconstruct cluster
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
救命的脚本