Created
January 24, 2020 15:51
-
-
Save BeerOnBeard/ebe63521607aa0db3851c39a5760489b 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 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; |
was looking if I should use xenial repo for kubeadm while I have bullseye, thanks for the comment
Hey, just saying thanks for the script!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for this nice skript; it helped me a lot.
Apparently, containerd is delivered with a default config.toml disabling the CRI plugin, so the "kubeadm init" command fails during pre-flight checks. In order to get it running again, comment out the line "disabled_plugins = ["cri"]" in "/etc/containerd/config.toml".