コンテナランタイムcontainerdでKubernetesを立ち上げるには
2024-06-10
azblob://2024/06/10/eyecatch/2024-06-10-kubernetes-with-containerd-000_0.jpg
こちらの記事はなむゆの個人ブログにもマルチポストしています。

はじめに

前回の記事では、kubeadmを用いてKubernetesクラスターを立ち上げる方法を確立できたのでそれを記事にしました。
今回はその中で大の一つであった、コンテナランタイムとしてcontainerdを使用してKubernetesを立ち上げる方法が確立できたので記事として残しておきます。
 

環境

今回使用している環境はAWSのEC2としています。
主な設定は以下の通りです。
- name: kubernetestest-dev-app-controlplane
  image: Canonical, Ubuntu, 24.04 LTS, amd64 noble image build on 2024-04-23
  instanceType: t3.small
  パブリックIPの自動割り当て: 有効化
 

手順

1. containerdをインストール
sudo apt-get update
sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
 
2. IPv4フォワーディングを有効化し、iptablesからブリッジされたトラフィックを見えるようにする
こちらで解説されているとおり、設定の変更を行います。
この設定を行わないとkubeadmの起動時にpreflightチェックでエラーを起こすので注意です。
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

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

sudo sysctl --system

kubeadmのインストール、起動

# Kubernetesのインストール
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# Kubernetesの起動
sudo kubeadm init --pod-network-cidr=10.0.0.0/16

動作確認

<code>kubectl get nodes -o wide</code>コマンドを実行すると、以下のようにコンテナランタイムの名前付きでノードの情報が表示されます。
コンテナランタイムがcontainerdになっています、やったね!(この環境ではCNIも仕込んだためNodeの状態がReadyになっています、コンテナランタイムを仕込んでKubernetesを立ち上げただけの状態だとNot Readyとなります)

おわりに

今回の記事では、コンテナランタイムとしてcontainerdを使用してKubernetesを立ち上げる方法を解説しました。
これと前回の記事と合わせて、最新のパッケージを用いてマシンにKubernetesを仕込む方法が確立できたかと思います。
マシンにkubeadmでKubernetesを仕込む方法が確立できていれば、Kubernetesの新しいバージョンが発表されてもEKSやAKSが対応するのを待つことなく新しいバージョンの機能に触れることができるので、個人的にできるようになりたかったことの一つです。
同じようなことがやりたい方がこの記事を読んでいるのかなと思います、そんな方の助けになれば幸いです。