設定オプション

このページでは、K3sを初めてセットアップする際によく使用されるオプションに焦点を当てます。詳細については、高度なオプションと設定およびサーバーエージェントのコマンドドキュメントを参照してください。

インストールスクリプトによる設定

クイックスタートガイドで述べたように、https://get.k3s.io で利用可能なインストールスクリプトを使用して、systemdおよびopenrcベースのシステムにK3sをサービスとしてインストールできます。

INSTALL_K3S_EXECK3S_環境変数、およびコマンドフラグの組み合わせを使用して、サービス設定に設定を渡すことができます。 プレフィックス付きの環境変数、INSTALL_K3S_EXECの値、およびトレイリングシェル引数はすべてサービス設定に保存されます。 インストール後、環境ファイルを編集するか、サービス設定を編集するか、または新しいオプションでインストーラーを再実行することで設定を変更できます。

これを示すために、以下のコマンドはすべて、Flannelなしでトークンを使用してサーバーを登録する同じ動作をもたらします:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none --token 12345
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --flannel-backend none" K3S_TOKEN=12345 sh -s -
curl -sfL https://get.k3s.io | K3S_TOKEN=12345 sh -s - server --flannel-backend none
# K3S_URLがないため、以下ではサーバーが想定されます
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend none --token 12345" sh -s -
curl -sfL https://get.k3s.io | sh -s - --flannel-backend none --token 12345

エージェントを登録する場合、以下のコマンドはすべて同じ動作をもたらします:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://k3s.example.com --token mypassword" sh -s -
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" K3S_TOKEN="mypassword" sh -s - --server https://k3s.example.com
curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com sh -s - agent --token mypassword
curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com K3S_TOKEN=mypassword sh -s - # K3S_URLがあるためエージェントが想定されます

すべての環境変数の詳細については、環境変数を参照してください。

注意

インストールスクリプトを実行する際に設定を行ったが、再実行する際に設定を再度行わない場合、元の値は失われます。

設定ファイルの内容はインストールスクリプトによって管理されません。 設定をインストールスクリプトから独立させたい場合は、環境変数や引数をインストールスクリプトに渡すのではなく、設定ファイルを使用するべきです。

バイナリによる設定

前述のように、インストールスクリプトは主にK3sをサービスとして実行するための設定に関心があります。 スクリプトを使用しない場合は、https://github.com/k3s-io/k3s/releases/latest[リリースページ]からバイナリをダウンロードし、パスに配置して実行するだけでK3sを実行できます。これは恒久的なインストールには特に役立ちませんが、K3sをシステムサービスとして管理する価値がない迅速なテストを行う場合には役立つかもしれません。

curl -Lo /usr/local/bin/k3s https://github.com/k3s-io/k3s/releases/download/v1.26.5+k3s1/k3s; chmod a+x /usr/local/bin/k3s

K3S_環境変数を設定して設定を渡すことができます:

K3S_KUBECONFIG_MODE="644" k3s server

またはコマンドフラグ:

k3s server --write-kubeconfig-mode=644

k3sエージェントもこの方法で設定できます:

k3s agent --server https://k3s.example.com --token mypassword

K3sサーバーの設定の詳細については、k3s serverドキュメントを参照してください。 K3sエージェントの設定の詳細については、k3s agentドキュメントを参照してください。 また、--helpフラグを使用して、利用可能なすべてのオプションとそれに対応する環境変数のリストを表示することもできます。

フラグの一致

サーバーノードで重要なフラグを一致させることが重要です。たとえば、マスターノードで--disable servicelb--cluster-cidr=10.200.0.0/16フラグを使用し、他のサーバーノードで設定しない場合、ノードは参加に失敗します。エラーとして次のようなメッセージが表示されます: failed to validate server configuration: critical configuration value mismatch. サーバー設定の詳細については、上記のリンクを参照してください。

設定ファイル

バージョンゲート

v1.19.1+k3s1以降で利用可能

K3sは環境変数やCLI引数で設定するだけでなく、設定ファイルも使用できます。

デフォルトでは、/etc/rancher/k3s/config.yamlにあるYAMLファイルの値がインストール時に使用されます。

以下は基本的なserver設定ファイルの例です:

write-kubeconfig-mode: "0644"
tls-san:
  - "foo.local"
node-label:
  - "foo=bar"
  - "something=amazing"
cluster-init: true

これは次のCLI引数に相当します:

k3s server \
  --write-kubeconfig-mode "0644"    \
  --tls-san "foo.local"             \
  --node-label "foo=bar"            \
  --node-label "something=amazing"  \
  --cluster-init

一般的に、CLI引数はそれぞれのYAMLキーにマップされ、繰り返し可能なCLI引数はYAMLリストとして表されます。ブールフラグはYAMLファイルではtrueまたはfalseとして表されます。

設定ファイルとCLI引数の両方を使用することも可能です。この場合、値は両方のソースから読み込まれますが、CLI引数が優先されます。--node-labelのような繰り返し可能な引数の場合、CLI引数はリスト内のすべての値を上書きします。

最後に、設定ファイルの場所はCLI引数--config FILE, -c FILEまたは環境変数$K3S_CONFIG_FILEを使用して変更できます。

複数の設定ファイル

バージョンゲート

v1.21.0+k3s1以降で利用可能

複数の設定ファイルがサポートされています。デフォルトでは、設定ファイルは/etc/rancher/k3s/config.yamlおよび/etc/rancher/k3s/config.yaml.d/*.yamlからアルファベット順に読み込まれます。

デフォルトでは、特定のキーに対して最後に見つかった値が使用されます。キーに``を追加すると、既存の文字列やスライスに値を追加することができます。以降のファイルでもこのキーに``を追加しないと、累積された値が上書きされます。

以下は複数の設定ファイルの例です:

# config.yaml
token: boop
node-label:
  - foo=bar
  - bar=baz


# config.yaml.d/test1.yaml
write-kubeconfig-mode: 600
node-taint:
  - alice=bob:NoExecute

# config.yaml.d/test2.yaml
write-kubeconfig-mode: 777
node-label:
  - other=what
  - foo=three
node-taint+:
  - charlie=delta:NoSchedule

これにより、最終的な設定は次のようになります:

write-kubeconfig-mode: 777
token: boop
node-label:
  - other=what
  - foo=three
node-taint:
  - alice=bob:NoExecute
  - charlie=delta:NoSchedule

すべてをまとめる

上記のすべてのオプションを組み合わせて、単一の例にすることができます。

/etc/rancher/k3s/config.yamlconfig.yamlファイルを作成します:

token: "secret"
debug: true

次に、環境変数とフラグの組み合わせでインストールスクリプトを実行します:

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none

または、すでにK3sバイナリをインストールしている場合:

K3S_KUBECONFIG_MODE="644" k3s server --flannel-backend none

これにより、次の設定を持つサーバーが作成されます:

  • パーミッション644のkubeconfigファイル

  • フランネルバックエンドがnoneに設定

  • トークンがsecretに設定

  • デバッグログが有効