Skip to content

Instantly share code, notes, and snippets.

@wavezhang
Last active June 27, 2019 08:18
Show Gist options
  • Select an option

  • Save wavezhang/199c2d1e2a19d10bf2168b71b7970fe7 to your computer and use it in GitHub Desktop.

Select an option

Save wavezhang/199c2d1e2a19d10bf2168b71b7970fe7 to your computer and use it in GitHub Desktop.

Revisions

  1. wavezhang revised this gist Jun 27, 2019. No changes.
  2. wavezhang created this gist Jul 24, 2018.
    39 changes: 39 additions & 0 deletions change_pod_cidr.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    #!/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