Gentooでkubernetesのセットアップ

事前準備

  • 固定 IP 化
  • swap を無効化
  • docker のインストールと自動起動

cgroup で CPU とメモリーが有効になっている必要がある

Gentoo で OpenRC だと /etc/rc.conf で設定する。

Gentoo側は Cgroup v1 と v2 の設定が選べる(hybrit になるようだ)。 Kubernetes での Cgroup v2 サポートは Docker で Docker Engine 20.10 から実装された模様

2021/10/10 時点の 私の Gentoo の Docker のバージョンを確認した所、20.10.7 だった。 kubernetes は 1.22 から Cgroup v2 をサポートした模様 参考 Kubernetes 1.22 における新機能は?

ただ私がKubernetesをインストールする際に使った k3s.io のバージョンを確認した所、2021/10/24時点で v1.21.5+k3s2 だった。 ので v1 をサポートする設定のままにする。

k3s.ioで一発インストール

結局、これが一番はやい。

※ この前に既に Gentoo のパッケージで kubectl をインストールしている場合は削除すること k3s.io はコマンドがインストールしてあると、そちらを使うように kubectl をインストールしない。 k3s.io 由来の kubectl だと設定なしですぐ kuernetes の api につながるようになっている。

各サーバの/etc/hostsで名前解決できるようにしておく。私は

10.10.254.20 kubernetes-master
10.10.254.22 kubernetes-worker-1
10.10.254.24 kubernetes-worker-2

のような内容を追加した。master用のサーバで下記のように実行

root@kubernetes-master /h/kaoru# curl -sfL https://get.k3s.io  | sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.21.5+k3s2 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/sha256sum-arm64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s-arm64
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/rancher/k3s/k3s.env
[INFO]  openrc: Creating service file /etc/init.d/k3s
[INFO]  openrc: Enabling k3s service for default runlevel
[INFO]  openrc: Starting k3s
 * Caching service dependencies ...                                                       [ ok ]
 * Starting k3s ...                                                                       [ ok ]

worker側セットアップでは /etc/hosts の修正と masterのapiエンドポイントとnode用のトークンが必要

トークンは

sudo cat /var/lib/rancher/k3s/server/node-token

で取得できる。

kaoru@kubernetes-worker-1 ~> curl -sfL https://get.k3s.io | K3S_URL=https://kubernetes-master:6443 K3S_TOKEN=トークン
6294::server:b53afd2b4460fad56ba9c50eb84d2c1c sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.21.5+k3s2 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/sha256sum-arm64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.21.5+k3s2/k3s-arm64
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, command exists in PATH at /usr/bin/kubectl
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
[INFO]  env: Creating environment file /etc/rancher/k3s/k3s-agent.env
[INFO]  openrc: Creating service file /etc/init.d/k3s-agent
[INFO]  Failed to find memory cgroup, you may need to add "cgroup_memory=1 cgroup_enable=memory" to your linux cmdline (/boot/cmdline.txt on a Raspberry Pi)
[INFO]  openrc: Enabling k3s-agent service for default runlevel
[INFO]  openrc: Starting k3s-agent
 * Caching service dependencies ...                                                                                                                                   [ ok ]
  * Starting k3s-agent ...                                                                                                                                             [ ok ]

ドキュメント郡

アーキテクチャを見ると、外部 DB に接続可能なので、これは別立てを試してみたい( デフォルトは SQL Lite )