おうちにかえりたいブログ



Debian trixie に kubeadm でシングルノード構成の Kubernetes 環境を構築する

概要

kubeadmを使ってKubernetes環境をDebianの現在での最新のtesting であるDebian trixieで動作するよう頑張った記録です。

必要なパッケージのインストール

必要なパッケージのインストールします

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install wget gpg apt-transport-https ca-certificates yq

wget -O- --no-verbose 'https://dl.k8s.io/apt/doc/apt-key.gpg'\
 |sudo gpg --dearmor --batch --yes -o '/etc/apt/keyrings/k8s.gpg'
printf \
'deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://apt.kubernetes.io/ kubernetes-xenial main\n'\
 |sudo tee /etc/apt/sources.list.d/k8s.list >/dev/null

wget -O- --no-verbose 'https://download.docker.com/linux/debian/gpg'\
 |sudo gpg --dearmor --batch --yes -o '/etc/apt/keyrings/docker.gpg' -
printf \
'deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable\n'\
 |sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install kubelet kubeadm kubectl docker-ce

Containerd の設定

sudo containerd config default\
 |sed 's/SystemdCgroup = false/SystemdCgroup = true/'\
 |sudo tee /etc/containerd/config.toml >/dev/null
sudo systemctl restart containerd

kubeadm の初期設定

sudo kubeadm init --v=5 --pod-network-cidr=10.244.0.0/16

kubectlできるようにする

mkdir -p ~/.kube
sudo cat /etc/kubernetes/admin.conf >~/.kube/config

シングルノードの場合

kubectl taint node --all node-role.kubernetes.io/control-plane-

hostpathなStorageClassの追加

必須ではないですが便利なので準備します。

sudo yq -yi '."spec"."containers"[0]."command"+=["--enable-hostpath-provisioner"]' /etc/kubernetes/manifests/kube-controller-manager.yaml
printf \
'apiVersion: storage.k8s.io/v1\n'\
'kind: StorageClass\n'\
'metadata:\n'\
' name: standard\n'\
' annotations:\n'\
'  storageclass.beta.kubernetes.io/is-default-class: "true"\n'\
'provisioner: kubernetes.io/host-path\n'\
'volumeBindingMode: WaitForFirstConsumer\n'\
 |kubectl apply -f -