K3sのインストール時にコマンドラインオプションや環境変数でパラメタをいろいろ設定できるが、数が多くなると見通しが悪くなりメンテ性も落ちる。
そんな時は設定ファイルにパラメタを指定すれば管理しやすい。
設定のコメントも書ける
ファイルの記述例
--- 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をアンインストールしてもファイルは消えない。
ここでもちょこっと触れていた。