Forked from BeerOnBeard/install-kubernetes-on-buster.sh
Created
January 27, 2022 21:49
-
-
Save reinaldoca/5d0a52e4084e60e65526b72a53ac556d to your computer and use it in GitHub Desktop.
Set up a single-node Kubernetes system on Debian 10 (Bustomer). Use Flannel as the network fabric. Install the Kubernetes dashboard.
This file contains hidden or 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 | |
set -e; | |
# Set up a single-node Kubernetes system on Debian 10 (Buster). | |
# Use Flannel as the network fabric. Install the Kubernetes | |
# dashboard. | |
# disable swap | |
swapoff -a; | |
# enable bridge netfilter | |
modprobe br_netfilter; | |
echo 'net.bridge.bridge-nf-call-iptables = 1' > /etc/sysctl.d/20-bridge-nf.conf; | |
sysctl --system; | |
# install tools for adding apt sources | |
apt-get update; | |
apt-get install -y \ | |
apt-transport-https \ | |
ca-certificates \ | |
curl \ | |
gnupg2; | |
# install docker | |
mkdir /etc/docker; | |
cat > /etc/docker/daemon.json <<EOF | |
{ | |
"exec-opts": ["native.cgroupdriver=systemd"], | |
"log-driver": "json-file", | |
"log-opts": { "max-size": "100m" }, | |
"storage-driver": "overlay2" | |
} | |
EOF | |
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -; | |
echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' > /etc/apt/sources.list.d/docker.list; | |
apt-get update; | |
apt-get install -y --no-install-recommends docker-ce; | |
# install kubernetes | |
# NOTE: "xenial" is correct here. Kubernetes publishes the Debian-based packages at kubernetes-xenial. | |
# reference: https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-using-native-package-management | |
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -; | |
echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' > /etc/apt/sources.list.d/kubernetes.list; | |
apt-get update; | |
apt-get install -y kubelet kubeadm kubectl; | |
# initialize kubernetes with a Flannel compatible pod network CIDR | |
kubeadm init --pod-network-cidr=10.244.0.0/16; | |
# setup kubectl | |
mkdir -p $HOME/.kube | |
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config; | |
# install Flannel | |
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml; | |
# install Dashboard | |
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc2/aio/deploy/recommended.yaml; | |
cat > dashboard-admin.yaml <<EOF | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRoleBinding | |
metadata: | |
name: kubernetes-dashboard | |
namespace: kubernetes-dashboard | |
roleRef: | |
apiGroup: rbac.authorization.k8s.io | |
kind: ClusterRole | |
name: cluster-admin | |
subjects: | |
- kind: ServiceAccount | |
name: kubernetes-dashboard | |
namespace: kubernetes-dashboard | |
EOF | |
kubectl delete clusterrolebinding/kubernetes-dashboard; | |
kubectl apply -f dashboard-admin.yaml; | |
# get the dashboard secret and display it | |
kubectl get secret -n kubernetes-dashboard \ | |
| grep kubernetes-dashboard-token- \ | |
| awk '{print $1}' \ | |
| xargs kubectl describe secret -n kubernetes-dashboard; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment