Skip to content

Instantly share code, notes, and snippets.

@aric49
Last active December 21, 2020 12:19
Show Gist options
  • Save aric49/8d6e5044026757e8aea1de48590a69c6 to your computer and use it in GitHub Desktop.
Save aric49/8d6e5044026757e8aea1de48590a69c6 to your computer and use it in GitHub Desktop.
# BootKube Deployment (FINAL):
## NEW INSTALLATIONS:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y docker.io vim ethtool traceroute git build-essential lldpd
## Cleanup
sudo systemctl stop kubelet.service
sudo docker rm bootkube-render
sudo docker stop $(sudo docker ps -a | grep k8s| cut -c1-20 | xargs sudo docker stop)
sudo docker rm -f $(sudo docker ps -a | grep k8s| cut -c1-20 | xargs sudo docker stop)
sudo docker rm -f $(sudo docker ps -a | grep bootkube| cut -c1-20 | xargs sudo docker stop)
sudo docker rm -f $(sudo docker ps -a | grep bootkube| cut -c1-20 | xargs sudo docker stop)
sudo rm -rf /etc/kubernetes/
sudo rm -rf /var/run/calico
sudo rm -rf /var/run/flannel
sudo rm -rf /home/$USER/.bootkube
sudo ip link set flannel.1 down
### DOWNLOAD:
wget https://github.com/kubernetes-incubator/bootkube/releases/download/v0.4.1/bootkube.tar.gz
tar zxvf bootkube.tar.gz
sudo chmod +x bin/linux/bootkube
sudo cp bin/linux/bootkube /usr/local/bin/
wget http://storage.googleapis.com/kubernetes-release/release/v1.6.2/bin/linux/amd64/kubectl
sudo chmod +x kubectl
sudo mv kubectl /usr/local/bin/
wget https://github.com/containernetworking/cni/releases/download/v0.5.2/cni-amd64-v0.5.2.tgz
sudo mkdir -p /opt/cni/bin
sudo tar -xf cni-amd64-v0.5.2.tgz -C /opt/cni/bin/
wget http://storage.googleapis.com/kubernetes-release/release/v1.6.2/bin/linux/amd64/kubelet
sudo mv kubelet /usr/local/bin/kubelet
chmod +x /usr/local/bin/kubelet
### RENDER:
sudo /usr/bin/docker run -v /home/ubuntu:/home/ubuntu quay.io/coreos/bootkube:v0.4.1 /bootkube render --asset-dir=/home/ubuntu/.bootkube --experimental-self-hosted-etcd --etcd-servers=http://10.3.0.15:12379 --api-servers=https://kubernetes:443
sudo rm -rf /home/ubuntu/.bootkube/manifests/kube-flannel*
### DEPLOY LIKE THIS:
sudo vi /etc/systemd/system/kubelet.service
sudo systemctl daemon-reload
sudo systemctl restart kubelet.service
sudo cp /home/ubuntu/.bootkube/auth/kubeconfig /etc/kubernetes/
sudo cp -a /home/ubuntu/.bootkube/* /etc/kubernetes/
sudo bootkube start --asset-dir=/home/ubuntu/.bootkube
### WAIT FOR KUBERNETES API TO COME UP CLEANLY...
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig label node --all node-role.kubernetes.io/canal-node=true
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig label node --all node-role.kubernetes.io/master="" --overwrite
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig apply -f https://gist.githubusercontent.com/v1k0d3n/0e6ff14cb913c93f0f3ec5c4cceb4915/raw/de8b1d9d3c4018179852ffad28e0c66c22ff724b/canal-etcd.yaml
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig apply -f https://gist.githubusercontent.com/v1k0d3n/39c496287bdcd4a5a6aa439050fb7332/raw/cfb20fef7c7404df5dd8a6fe958a1f870ea7b423/canal.yaml
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig apply -f https://gist.githubusercontent.com/v1k0d3n/4b58246e88b404fad5b17da95876e61b/raw/b2b205d56de2afad5e9ba768f7d0826c4c13599c/calico-cfg.yaml
### Apply Cluster-HA Configuration:
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig apply -f https://gist.githubusercontent.com/v1k0d3n/2b39143572f28be5c44b20b70b7be502/raw/2768a0f1e95481d9da39dd23ad3b270177edcc0e/cluster-ha.yaml
### TESTING:
sudo kubectl --kubeconfig=/etc/kubernetes/kubeconfig get pods -o wide --all-namespaces
### KUBLET CONFIG:
sudo vi /etc/systemd/system/kubelet.service
###############################
[Unit]
Description=Kubernetes Kubelet
Documentation=https://kubernetes.io/docs/admin/kubelet/
[Service]
ExecStartPre=/bin/mkdir -p /etc/kubernetes/manifests
ExecStart=/usr/local/bin/kubelet \
--kubeconfig=/etc/kubernetes/kubeconfig \
--require-kubeconfig \
--cni-conf-dir=/etc/cni/net.d \
--cni-bin-dir=/opt/cni/bin \
--network-plugin=cni \
--lock-file=/var/run/lock/kubelet.lock \
--exit-on-lock-contention \
--pod-manifest-path=/etc/kubernetes/manifests \
--allow-privileged \
--cluster_dns=192.168.1.70,8.8.8.8,10.3.0.10 \
--cluster_domain=cluster.local \
--node-labels= \
--hostname-override=192.168.4.79 \
--v=2
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
#################################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment