zaki work log

作業ログやら生活ログやらなんやら

[K3s] 設定ファイルを使ったインストール時のパラメタ指定

K3sのインストール時にコマンドラインオプションや環境変数でパラメタをいろいろ設定できるが、数が多くなると見通しが悪くなりメンテ性も落ちる。
そんな時は設定ファイルにパラメタを指定すれば管理しやすい。
設定のコメントも書ける

docs.k3s.io

ファイルの記述例

---
write-kubeconfig-mode: "0644"
cluster-cidr: "176.19.0.0/16" # PodのIPアドレス指定
service-cidr: "176.29.0.0/16" # ServiceのIPアドレス指定
kube-controller-manager-arg:
  - node-cidr-mask-size=24    # 1ノードにおけるPodのIPアドレスサイズ
kubelet-arg:
  - max-pods=220  # 1ノードにおけるpodの最大デプロイ数
  - kube-reserved=cpu=100m,memory=100Mi   # kube-reserved設定
  - system-reserved=cpu=100m,memory=100Mi # system-reserved設定
node-label: # ノードのラベル設定
  - app=front
  - role=server

これと同等の内容をコマンドラインオプションで指定しようとすると、以下の通り。

curl -sfL https://get.k3s.io | sh -s - \
  --write-kubeconfig-mode "0644" \
  --cluster-cidr "176.19.0.0/16" \
  --service-cidr "176.29.0.0/16" \
  --kube-controller-manager-arg node-cidr-mask-size=24 \
  --kubelet-arg max-pods=220 \
  --kubelet-arg kube-reserved=cpu=100m,memory=100Mi \
  --kubelet-arg system-reserved=cpu=100m,memory=100Mi \
  --node-label app=front \
  --node-label role=server

ファイルの指定

デフォルトのパスにファイルを配置する構成か、任意のパスにおいたファイルの場所を指定する構成がある。
機能的な差異は何もないが、k3s-uninstall.shでアンインストールする際にデフォルトの場合は設定ファイルが削除されるという副作用がある。
運用で利用するのであればデフォルトのパスで良いが、検証用途などで何度もインストールとアンインストールを繰り返す場合は、指定した方が手間が少ない。

デフォルトのパスのファイル指定

K3sインストール前に設定ファイルを/etc/rancher/k3s/config.yamlに配置しておく。
ファイルを置いたら、特にオプションは指定せずにインストールする。

zaki@k3s-node2:~$ cat /etc/rancher/k3s/config.yaml 
---
write-kubeconfig-mode: "0644"
cluster-cidr: "176.19.0.0/16"
service-cidr: "176.29.0.0/16"
kube-controller-manager-arg:
  - node-cidr-mask-size=24
kubelet-arg:
  - max-pods=220
  - kube-reserved=cpu=100m,memory=100Mi
  - system-reserved=cpu=100m,memory=100Mi
node-label:
  - app=front
  - role=server
zaki@k3s-node2:~$ curl -sfL https://get.k3s.io | sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.30.4+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.30.4+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github
:
:

最も簡単な構成だが、K3sのアンインストールを行うと/etc/rancher/k3s/config.yamlは削除されるので注意。

任意のパスの設定ファイル指定

--configで指定する。

curl -sfL https://get.k3s.io | sh -s - --config ~/config.yaml

実行したコマンド(指定したファイルのパス)がそのまま/etc/systemd/system/k3s.serviceに記録されるため、相対パスの指定は不可。 ~は実行後に展開されるので有効。

以下はNG

curl -sfL https://get.k3s.io | sh -s - --config ./config.yaml

この場合、K3sをアンインストールしてもファイルは消えない。


ここでもちょこっと触れていた。

zaki-hmkc.hatenablog.com