k3s Tips
Tipsまとめ
/icons/hr.icon
k3s Server
k3s Server 関連の Tips
kubectl コマンド実行時に sudo を不要にする
k3sのインストール後、デフォルトでは/etc/rancher/k3s/k3s.yamlに設定ファイルが作成される。このファイルをユーザーのホームディレクトリにコピーし、ファイル名を変更することで、ユーザー専用の設定として利用可能になる。コピー後、安全のためにコピーされたファイルの所有権を現在のユーザーに変更する。
$ mkdir ~/.kube
$ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
$ sudo chown $(whoami):$(whoami) ~/.kube/config
次に、kubectlが新しい設定ファイルを認識するように環境変数 KUBECONFIG を設定する
$ export KUBECONFIG=~/.kube/config
k3s Server のプロセス再起動などは不要で、すぐにsudoなしでkubectlが利用可能になる。このコマンドは現在のシェルセッションでのみ有効なので、永続的に設定する場合は使用しているシェルの設定ファイル(.bashrc, .zshrc等)に上記の行を追加する。
ログをTailする (systemdで起動している場合)
$ journalctl -u k3s -f
k3s server をアンインストールする
$ sudo /usr/local/bin/k3s-uninstall.sh
/icons/hr.icon
k3s Agent
k3s Agent 関連の Tips
k3s Agent をインストール & 起動する
systemctl で動作中の k3s Agent をアンインストール
$ sudo /usr/local/bin/k3s-agent-uninstall.sh
ノードにラベルを付ける
Control Planeから操作
$ kubectl label nodes <ノード名> <ラベル名>
またはプロセス起動時のOptionでも指定が可能
ノード名を指定する
何も指定しない場合は host 名がそのまま node name になるが、起動オプションで指定が可能。
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --node-name k3s-agent-001" K3S_URL=https://{k3s ServerのIP}:6443 K3S_TOKEN={Server Token} sh - あとから node name を変えた場合、新しい名前で登録される
その後、名前を元に戻して接続しようとするとエラーになる。Controle Planeで kubectl delete node して戻したい名前の Node を消せば再度登録できるようになる。
k3s Server と別のネットワークのホストをノードとして登録する
ネットワークが異なる場合、例えばk3s ServerをクラウドのVM上に立ててk3s Agentが家庭のネットワークにいる場合などは、kube proxy経由でのControl PlaneとNodeの接続ができない。そのため、Proxy経由での通信を諦めて、Control PlaneとNodeが直接通信できるように設定する必要がある。k3sの場合はk3s Agentの起動引数 (--disable-apiserver-lb) でこれが可能。
ログをTailする (systemctlで利用している場合)
$ journalctl -u k3s-agent -f
k3s agent をアンインストールする
$ sudo /usr/local/bin/k3s-agent-uninstall.sh
$ kubectl delete node <node_name>
/icons/hr.icon
Raspberry Pi に k3s をインストールする
k3s Server, k3s Agent ともにBootのKernel Parameterを設定する必要がある。
/boot/firmware/cmdline.txt の末尾に cgroup_memory=1 cgroup_enable=memory を追記してrebootする。