Kubernetes(0:テンプレート構築)
VMテンプレートの作成
pveのコンソールにてVMイメージのテンプレートを作成
# wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img # qm create 999 --memory 4096 --net0 virtio,bridge=vmbr0 # qm importdisk 999 focal-server-cloudimg-amd64.img local-lvm # qm set 999 --name k8s-template # qm set 999 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-999-disk-0
Cloud-initの設定
Cloud-initドライブを定義
# qm set 999 --ide2 local-lvm:cloudinit # qm set 999 --boot c --bootdisk scsi0 # qm set 999 --serial0 socket --vga serial0
構築に必要なツールのインストール
CRI構築
下記URLの公式ドキュメントを参考にコンテナランタイムを構築 https://kubernetes.io/docs/setup/production-environment/container-runtimes/
CRIはコンテナランタイムインターフェースの略で,コンテナを運用するためのツール。 Dockerのこの一つである。
Containerd・runc のインストール
競合を防ぐため古いパッケージを削除
sudo apt remove containerd runc
Dockerがcontainerdとruncをまとめたcontainerd.io
を用意してくれているので,そのrepositoryを追加
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/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/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
containerd.ioをインストール
sudo apt update sudo apt install containerd.io
CNI構築
https://qiita.com/yuanying/items/68b2a32b4d217e679955 CNIとはコンテナのネットワークインタフェースを設定するための、runtime(containerd)とplugin(flannel)間のインタフェース
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz sudo mkdir -p /opt/cni/bin sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz
再起動後にも有効にするため設定
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter #sysctl params required by setup, params persist across reboots cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF #Apply sysctl params without reboot sudo sysctl --system
kubeadm構築
下記URLの公式ドキュメントを参考にkubeadmを構築 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
sudo apt update sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
tailscale構築
# この時点ではログインしない curl -fsSL https://tailscale.com/install.sh | sh
cockpit構築
sudo apt-get install cockpit -y sudo systemctl enable --now cockpit.socket
テンプレート化
# qm template 999