Skip to content

Instantly share code, notes, and snippets.

@rssws
Last active June 28, 2024 06:55
Show Gist options
  • Save rssws/e2d82275ef04940b50294dafb3fa6bdd to your computer and use it in GitHub Desktop.
Save rssws/e2d82275ef04940b50294dafb3fa6bdd to your computer and use it in GitHub Desktop.

Revisions

  1. rssws revised this gist Jul 23, 2022. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -98,6 +98,7 @@ main () {
    fi

    # Swap can cause problem for `kubeadm init`
    # This works only temporarily. See the blow comments for a permanent solution.
    sudo swapoff -a

    install_docker
  2. rssws revised this gist Jul 23, 2022. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -62,9 +62,12 @@ setup_master () {
    sudo mv flanneld-amd64 /opt/bin/flanneld
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

    # Print join information again
    kubeadm token create --print-join-command

    # Untaint master node to allow pod scheduling on master node
    kubectl taint nodes --all node-role.kubernetes.io/master-
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-
    # kubectl taint nodes --all node-role.kubernetes.io/master-
    # kubectl taint nodes --all node-role.kubernetes.io/control-plane-
    }

    setup_worker () {
  3. rssws revised this gist Jul 23, 2022. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -94,6 +94,9 @@ main () {
    exit 1
    fi

    # Swap can cause problem for `kubeadm init`
    sudo swapoff -a

    install_docker
    install_kubernetes
    if [[ "${variant}" == "master" ]]; then
  4. rssws revised this gist Jul 23, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -105,4 +105,4 @@ main () {
    echo "Done!"
    }

    main
    main "$@"; exit
  5. rssws revised this gist Jul 23, 2022. 1 changed file with 71 additions and 61 deletions.
    132 changes: 71 additions & 61 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -1,71 +1,50 @@
    variant=$1
    variantList=("master" "worker")
    install_docker () {
    distro=$(cat /etc/*-release | grep DISTRIB_ID | awk -F '=' '{print $2}' | awk '{print tolower($0)}')
    distroList=("debian" "ubuntu")

    if [[ -n "${variant}" ]]; then
    if [[ " ${variantList[*]} " =~ " ${variant} " ]]; then
    echo "Installing kubernetes for ${variant} node"
    if [[ -n "${distro}" ]]; then
    if [[ " ${distroList[*]} " =~ " ${distro} " ]]; then
    echo "Installing kubernetes on $distro"
    else
    echo "Upsupported system distro: ${distro}"
    echo "<distro> must be one of: ${distroList[*]}"
    exit 1
    fi
    else
    echo "Upsupported variant: ${variant}"
    echo "<variant> must be one of: ${variantList[*]}"
    echo "Unknown system distro"
    exit 1
    fi
    else
    echo "Unknown variant"
    echo "Usage: $0 [master|worker]"
    exit 1
    fi

    distro=$(cat /etc/*-release | grep DISTRIB_ID | awk -F '=' '{print $2}' | awk '{print tolower($0)}')
    distroList=("debian" "ubuntu")

    if [[ -n "${distro}" ]]; then
    if [[ " ${distroList[*]} " =~ " ${distro} " ]]; then
    echo "Installing kubernetes on $distro"
    else
    echo "Upsupported system distro: ${distro}"
    echo "<distro> must be one of: ${distroList[*]}"
    exit 1
    fi
    else
    echo "Unknown system distro"
    exit 1
    fi

    # Install docker
    sudo apt-get update
    sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/${distro}/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${distro} \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    # Install kubernetes (kubeadm)
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    # Remove containerd config and restart
    sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd
    # Install docker
    sudo apt-get update
    sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/${distro}/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${distro} \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    }

    if [[ "${variant}" == "master" ]]; then
    setup_master
    else
    setup_worker
    fi
    install_kubernetes () {
    # Install kubernetes (kubeadm)
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    echo "Done!"
    # Remove containerd config and restart
    sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd
    }

    setup_master () {
    # Initialize master node using kubeadm
    @@ -96,3 +75,34 @@ setup_worker () {
    echo "kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>"
    echo "==================================================================================="
    }

    main () {
    variant=$1
    variantList=("master" "worker")

    if [[ -n "${variant}" ]]; then
    if [[ " ${variantList[*]} " =~ " ${variant} " ]]; then
    echo "Installing kubernetes for ${variant} node"
    else
    echo "Upsupported variant: ${variant}"
    echo "<variant> must be one of: ${variantList[*]}"
    exit 1
    fi
    else
    echo "Unknown variant"
    echo "Usage: $0 [master|worker]"
    exit 1
    fi

    install_docker
    install_kubernetes
    if [[ "${variant}" == "master" ]]; then
    setup_master
    else
    setup_worker
    fi

    echo "Done!"
    }

    main
  6. rssws revised this gist Jul 23, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ if [[ -n "${variant}" ]]; then
    fi
    else
    echo "Unknown variant"
    echo "Usage: $0 <variant=[master|worker]>"
    echo "Usage: $0 [master|worker]"
    exit 1
    fi

  7. rssws revised this gist Jul 23, 2022. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -60,9 +60,9 @@ sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd

    if [[ "${variant}" == "master" ]]; then
    setup_master()
    setup_master
    else
    setup_worker()
    setup_worker
    fi

    echo "Done!"
  8. rssws revised this gist Jul 16, 2022. 2 changed files with 98 additions and 46 deletions.
    98 changes: 98 additions & 0 deletions install-k8s-flannel-debian+ubuntu.bash
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,98 @@
    variant=$1
    variantList=("master" "worker")

    if [[ -n "${variant}" ]]; then
    if [[ " ${variantList[*]} " =~ " ${variant} " ]]; then
    echo "Installing kubernetes for ${variant} node"
    else
    echo "Upsupported variant: ${variant}"
    echo "<variant> must be one of: ${variantList[*]}"
    exit 1
    fi
    else
    echo "Unknown variant"
    echo "Usage: $0 <variant=[master|worker]>"
    exit 1
    fi

    distro=$(cat /etc/*-release | grep DISTRIB_ID | awk -F '=' '{print $2}' | awk '{print tolower($0)}')
    distroList=("debian" "ubuntu")

    if [[ -n "${distro}" ]]; then
    if [[ " ${distroList[*]} " =~ " ${distro} " ]]; then
    echo "Installing kubernetes on $distro"
    else
    echo "Upsupported system distro: ${distro}"
    echo "<distro> must be one of: ${distroList[*]}"
    exit 1
    fi
    else
    echo "Unknown system distro"
    exit 1
    fi

    # Install docker
    sudo apt-get update
    sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/${distro}/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/${distro} \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    # Install kubernetes (kubeadm)
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    # Remove containerd config and restart
    sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd

    if [[ "${variant}" == "master" ]]; then
    setup_master()
    else
    setup_worker()
    fi

    echo "Done!"

    setup_master () {
    # Initialize master node using kubeadm
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16

    # Run kubernetes as a regular user
    sudo mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    # Apply flannel add-on
    sudo apt-get install -y wget
    wget https://github.com/flannel-io/flannel/releases/download/v0.18.1/flanneld-amd64
    sudo mkdir -p /opt/bin
    sudo mv flanneld-amd64 /opt/bin/flanneld
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

    # Untaint master node to allow pod scheduling on master node
    kubectl taint nodes --all node-role.kubernetes.io/master-
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-
    }

    setup_worker () {
    # Join master node
    echo "==================================================================================="
    echo "Joining master node by running the following command:"
    echo "-----------------------------------------------------------------------------------"
    echo "kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>"
    echo "==================================================================================="
    }
    46 changes: 0 additions & 46 deletions install-k8s-flannel-debian-master.bash
    Original file line number Diff line number Diff line change
    @@ -1,46 +0,0 @@
    # Install docker
    sudo apt-get update
    sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    # Install kubernetes (kubeadm)
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    # Remove containerd config and restart
    sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd

    # Initialize master node using kubeadm
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16

    # Run kubernetes as a regular user
    sudo mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    # Apply flannel add-on
    sudo apt-get install -y wget
    wget https://github.com/flannel-io/flannel/releases/download/v0.18.1/flanneld-amd64
    sudo mkdir -p /opt/bin
    sudo mv flanneld-amd64 /opt/bin/flanneld
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

    # Untaint master node to allow pod scheduling on master node
    kubectl taint nodes --all node-role.kubernetes.io/master-
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-
  9. rssws created this gist Jul 16, 2022.
    46 changes: 46 additions & 0 deletions install-k8s-flannel-debian-master.bash
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    # Install docker
    sudo apt-get update
    sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    # Install kubernetes (kubeadm)
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl

    # Remove containerd config and restart
    sudo rm /etc/containerd/config.toml
    sudo systemctl restart containerd

    # Initialize master node using kubeadm
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16

    # Run kubernetes as a regular user
    sudo mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    # Apply flannel add-on
    sudo apt-get install -y wget
    wget https://github.com/flannel-io/flannel/releases/download/v0.18.1/flanneld-amd64
    sudo mkdir -p /opt/bin
    sudo mv flanneld-amd64 /opt/bin/flanneld
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

    # Untaint master node to allow pod scheduling on master node
    kubectl taint nodes --all node-role.kubernetes.io/master-
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-