Skip to content

Instantly share code, notes, and snippets.

@wavezhang
Last active June 27, 2019 08:18
Show Gist options
  • Save wavezhang/199c2d1e2a19d10bf2168b71b7970fe7 to your computer and use it in GitHub Desktop.
Save wavezhang/199c2d1e2a19d10bf2168b71b7970fe7 to your computer and use it in GitHub Desktop.
change k8s pod cidr without reconstruct cluster
#!/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
@PU-101
Copy link

PU-101 commented Jun 27, 2019

救命的脚本

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment