メインコンテンツまでスキップ

k3s サーバー

このセクションでは、K3s サーバーの設定方法を学びます。

サーバーはエージェントも実行するため、k3s エージェント ドキュメントに記載されているすべての設定オプションはサーバーでもサポートされています。

オプションは CLI フラグとしてこのページに記載されていますが、設定ファイルオプションとしても渡すことができます。YAML 設定ファイルの使用については、設定ファイルのドキュメントを参照してください。

重要な設定値

以下のオプションは、クラスタ内のすべてのサーバーで同じ値に設定する必要があります。これを行わないと、埋め込み etcd を使用している場合は新しいサーバーがクラスタに参加できなくなり、外部データストアを使用している場合はクラスタの動作が不正確になります。

  • --agent-token
  • --cluster-cidr
  • --cluster-dns
  • --cluster-domain
  • --disable-cloud-controller
  • --disable-helm-controller
  • --disable-network-policy
  • --disable=servicelb 注: 他のパッケージ化されたコンポーネントはサーバーごとに無効にすることができます
  • --egress-selector-mode
  • --embedded-registry
  • --flannel-backend
  • --flannel-external-ip
  • --flannel-ipv6-masq
  • --secrets-encryption
  • --service-cidr

よく使用されるオプション

データベース

フラグ環境変数デフォルト説明
--datastore-endpointK3S_DATASTORE_ENDPOINTetcd、Mysql、Postgres、または Sqlite のデータソース名を指定
--datastore-cafileK3S_DATASTORE_CAFILEデータストアバックエンド通信を保護するために使用される TLS 証明書ファイル
--datastore-certfileK3S_DATASTORE_CERTFILEデータストアバックエンド通信を保護するために使用される TLS 認証ファイル
--datastore-keyfileK3S_DATASTORE_KEYFILEデータストアバックエンド通信を保護するために使用される TLS キーファイル
--etcd-expose-metricsfalseクライアントインターフェースに etcd メトリクスを公開
--etcd-disable-snapshotsfalse自動 etcd スナップショットを無効にする
--etcd-snapshot-name"etcd-snapshot-<unix-timestamp>"etcd スナップショットのベース名を設定
--etcd-snapshot-schedule-cron"0 */12 * * *"cron 仕様でのスナップショット間隔時間。例: 5 時間ごと '0 */5 _ * _'
--etcd-snapshot-retention5保持するスナップショットの数
--etcd-snapshot-dir${data-dir}/db/snapshotsDB スナップショットを保存するディレクトリ
--etcd-s3S3 へのバックアップを有効にする
--etcd-s3-endpoint"s3.amazonaws.com"S3 エンドポイント URL
--etcd-s3-endpoint-caS3 エンドポイントに接続するためのカスタム CA 証明書
--etcd-s3-skip-ssl-verifyS3 SSL 証明書の検証を無効にする
--etcd-s3-access-keyAWS_ACCESS_KEY_IDS3 アクセスキー
--etcd-s3-secret-keyAWS_SECRET_ACCESS_KEYS3 シークレットキー
--etcd-s3-bucketS3 バケット名
--etcd-s3-region"us-east-1"S3 リージョン / バケットの場所 (オプション)
--etcd-s3-folderS3 フォルダー
--etcd-s3-insecureHTTPS 経由の S3 を無効にする
--etcd-s3-timeout5m0sS3 タイムアウト (デフォルト: 5m0s)

クラスタオプション

フラグ環境変数説明
--token 値, -tK3S_TOKENサーバーまたはエージェントをクラスタに参加させるために使用される共有シークレット
--token-fileK3S_TOKEN_FILEクラスタシークレット/トークンを含むファイル
--agent-tokenK3S_AGENT_TOKENエージェントをクラスタに参加させるために使用される共有シークレット (サーバーには使用されません)
--agent-token-fileK3S_AGENT_TOKEN_FILEエージェントシークレットを含むファイル
--serverK3S_URLクラスタに参加するために接続するサーバー
--cluster-initK3S_CLUSTER_INIT埋め込み Etcd を使用して新しいクラスタを初期化
--cluster-resetK3S_CLUSTER_RESETすべてのピアを忘れて新しいクラスタの唯一のメンバーになる

管理用 Kubeconfig オプション

フラグ環境変数説明
--write-kubeconfig 値, -oK3S_KUBECONFIG_OUTPUT管理クライアントの kubeconfig をこのファイルに書き込む
--write-kubeconfig-modeK3S_KUBECONFIG_MODEこのモードで kubeconfig を書き込む。kubeconfig ファイルは root によって所有され、デフォルトモード 600 で書き込まれます。モードを 644 に変更すると、ホスト上の他の特権のないユーザーが読み取れるようになります。

高度なオプション

ロギング

フラグデフォルト説明
--debugN/Aデバッグログをオンにする
-v0ログレベルの詳細度の数値
--vmoduleN/Aファイルフィルタリングログの FILE_PATTERN=LOG_LEVEL 設定のカンマ区切りリスト
--log 値, -lN/Aファイルにログを記録
--alsologtostderrN/Aファイル (設定されている場合) と標準エラーにログを記録

リスナー

フラグデフォルト説明
--bind-address0.0.0.0k3s バインドアドレス
--https-listen-port6443HTTPS リッスンポート
--advertise-addressnode-external-ip/node-ipapiserver がサービスエンドポイントとして広告する IPv4/IPv6 アドレス
注: プライマリ service-cidr IP 範囲は広告されるアドレスと同じアドレスファミリである必要があります
--advertise-portlisten-port/0apiserver がクラスタのメンバーに広告するために使用するポート
--tls-sanN/ATLS 証明書のサブジェクト代替名として追加のホスト名または IPv4/IPv6 アドレスを追加

データ

フラグデフォルト説明
--data-dir 値, -d/var/lib/rancher/k3s または root でない場合は ${HOME}/.rancher/k3s状態を保持するフォルダー

シークレット暗号化

フラグデフォルト説明
--secrets-encryptionfalseシークレットの静止時の暗号化を有効にする

ネットワーキング

フラグデフォルト説明
--cluster-cidr value"10.42.0.0/16"Pod IPに使用するIPv4/IPv6ネットワークCIDR
--service-cidr value"10.43.0.0/16"サービスIPに使用するIPv4/IPv6ネットワークCIDR
--service-node-port-range value"30000-32767"NodePort可視性を持つサービスのために予約するポート範囲
--cluster-dns value"10.43.0.10"corednsサービスのためのIPv4クラスターIP。service-cidr範囲内である必要があります
--cluster-domain value"cluster.local"クラスタードメイン
--flannel-backend value"vxlan"'none', 'vxlan', 'ipsec'(非推奨), 'host-gw', 'wireguard-native', または 'wireguard'(非推奨) のいずれか
--flannel-ipv6-masq"N/A"PodのためのIPv6マスカレードを有効にする
--flannel-external-ip"N/A"Flannelトラフィックのためにノードの外部IPアドレスを使用
--servicelb-namespace value"kube-system"servicelbコンポーネントのPodのネームスペース
--egress-selector-mode value"agent"次のいずれかでなければなりません:
  • disabled: apiserverはノードと通信するためにエージェントトンネルを使用しません。サーバーがエージェントを実行し、kubeletに直接接続できる必要があります。そうでないと、apiserverはサービスエンドポイントにアクセスしたり、kubectl execやkubectl logsを実行できません。
  • agent: apiserverはノードと通信するためにエージェントトンネルを使用します。ノードはループバックアドレスからのトンネル接続を許可します。サーバーもエージェントを実行する必要があります。そうでないと、apiserverはサービスエンドポイントにアクセスできません。k3sの歴史的なデフォルトです。
  • pod: apiserverはノードとサービスエンドポイントと通信するためにエージェントトンネルを使用し、ノードを監視して正しいエージェントにエンドポイント接続をルーティングします。ノードはループバックアドレスまたはノードに割り当てられたCIDRからのトンネル接続を許可します。
  • cluster: apiserverはノードとサービスエンドポイントと通信するためにエージェントトンネルを使用し、エンドポイントを監視して正しいエージェントにエンドポイント接続をルーティングします。ノードはループバックアドレスまたは設定されたクラスタCIDR範囲からのトンネル接続を許可します。

ストレージクラス

フラグ説明
--default-local-storage-path valueローカルプロビジョナーストレージクラスのデフォルトローカルストレージパス

Kubernetesコンポーネント

フラグ説明
--disable value"--disableフラグの使用" を参照
--disable-schedulerKubernetesデフォルトスケジューラを無効にする
--disable-cloud-controllerk3sデフォルトクラウドコントローラーマネージャーを無効にする
--disable-kube-proxykube-proxyの実行を無効にする
--disable-network-policyk3sデフォルトネットワークポリシーコントローラーを無効にする
--disable-helm-controllerHelmコントローラーを無効にする

Kubernetesプロセスのカスタマイズフラグ

フラグ説明
--etcd-arg valueetcdプロセスのカスタマイズフラグ
--kube-apiserver-arg valuekube-apiserverプロセスのカスタマイズフラグ
--kube-scheduler-arg valuekube-schedulerプロセスのカスタマイズフラグ
--kube-controller-manager-arg valuekube-controller-managerプロセスのカスタマイズフラグ
--kube-cloud-controller-manager-arg valuekube-cloud-controller-managerプロセスのカスタマイズフラグ
--kubelet-arg valuekubeletプロセスのカスタマイズフラグ
--kube-proxy-arg valuekube-proxyプロセスのカスタマイズフラグ

実験的オプション

フラグ説明
--rootlessルートレスで実行
--enable-pprofスーパーバイザーポートでpprofエンドポイントを有効にする
--dockercontainerdの代わりにcri-dockerdを使用
--prefer-bundled-binホストバイナリよりもバンドルされたユーザースペースバイナリを優先
--disable-agent"エージェントレスサーバーの実行(実験的)" を参照
--embedded-registry"埋め込みレジストリミラー" を参照

非推奨オプション

フラグ環境変数説明
--no-flannelN/A--flannel-backend=none を使用
--no-deploy valueN/A--disable を使用
--cluster-secret valueK3S_CLUSTER_SECRET--token を使用
--flannel-backend wireguardN/A--flannel-backend=wireguard-native を使用
--flannel-backend value=option1=valueN/Aバックエンド構成でflannel構成ファイルを指定するには --flannel-conf を使用

K3sサーバーCLIヘルプ

以下に角括弧で表示されるオプション(例:[$K3S_TOKEN])は、その名前の環境変数として渡すことができることを意味します。

NAME:
k3s server - 管理サーバーを実行

USAGE:
k3s server [OPTIONS]

OPTIONS:
--config FILE, -c FILE (config) FILEから設定を読み込む(デフォルト: "/etc/rancher/k3s/config.yaml") [$K3S_CONFIG_FILE]
--debug (logging) デバッグログを有効にする [$K3S_DEBUG]
-v value (logging) ログレベルの詳細度の数値(デフォルト: 0)
--vmodule value (logging) ファイルフィルタリングログのためのFILE_PATTERN=LOG_LEVEL設定のカンマ区切りリスト
--log value, -l value (logging) ファイルにログを記録
--alsologtostderr (logging) ファイルに加えて標準エラーにもログを記録(設定されている場合)
--bind-address value (listener) k3sバインドアドレス(デフォルト: 0.0.0.0)
--https-listen-port value (listener) HTTPSリッスンポート(デフォルト: 6443)
--advertise-address value (listener) クラスターのメンバーに広告するためにapiserverが使用するIPv4アドレス(デフォルト: node-external-ip/node-ip)
--advertise-port value (listener) クラスターのメンバーに広告するためにapiserverが使用するポート(デフォルト: listen-port) (デフォルト: 0)
--tls-san value (listener) サーバーTLS証明書のサブジェクト代替名として追加のホスト名またはIPv4/IPv6アドレスを追加
--data-dir value, -d value (data) 状態を保持するフォルダー(デフォルト: /var/lib/rancher/k3s または ルートでない場合は ${HOME}/.rancher/k3s)
--cluster-cidr value (networking) Pod IPに使用するIPv4/IPv6ネットワークCIDR(デフォルト: 10.42.0.0/16)
--service-cidr value (networking) サービスIPに使用するIPv4/IPv6ネットワークCIDR(デフォルト: 10.43.0.0/16)
--service-node-port-range value (networking) NodePort可視性を持つサービスのために予約するポート範囲(デフォルト: "30000-32767")
--cluster-dns value (networking) corednsサービスのためのIPv4クラスターIP。service-cidr範囲内である必要があります(デフォルト: 10.43.0.10)
--cluster-domain value (networking) クラスタードメイン(デフォルト: "cluster.local")
--flannel-backend value (networking) backend<=option1=val1,option2=val2> ここでbackendは 'none', 'vxlan', 'ipsec' (非推奨), 'host-gw', 'wireguard-native', 'wireguard' (非推奨) のいずれか(デフォルト: "vxlan")
--flannel-ipv6-masq (networking) PodのためのIPv6マスカレードを有効にする
--flannel-external-ip (networking) Flannelトラフィックのためにノードの外部IPアドレスを使用
--egress-selector-mode value (networking) 'agent', 'cluster', 'pod', 'disabled' のいずれか(デフォルト: "agent")
--servicelb-namespace value (networking) servicelbコンポーネントのPodのネームスペース(デフォルト: "kube-system")
--write-kubeconfig value, -o value (client) 管理クライアントのためのkubeconfigを書き込むファイル [$K3S_KUBECONFIG_OUTPUT]
--write-kubeconfig-mode value (client) このモードでkubeconfigを書き込む [$K3S_KUBECONFIG_MODE]
--token value, -t value (cluster) サーバーまたはエージェントをクラスターに参加させるために使用される共有シークレット [$K3S_TOKEN]
--token-file value (cluster) トークンを含むファイル [$K3S_TOKEN_FILE]
   --agent-token value                        (cluster) エージェントをクラスターに参加させるための共有シークレット。ただしサーバーには使用しない [$K3S_AGENT_TOKEN]
--agent-token-file value (cluster) エージェントシークレットを含むファイル [$K3S_AGENT_TOKEN_FILE]
--server value, -s value (cluster) クラスターに参加するために接続するサーバー [$K3S_URL]
--cluster-init (cluster) 組み込みのEtcdを使用して新しいクラスターを初期化する [$K3S_CLUSTER_INIT]
--cluster-reset (cluster) すべてのピアを忘れ、新しいクラスターの唯一のメンバーになる [$K3S_CLUSTER_RESET]
--cluster-reset-restore-path value (db) 復元するスナップショットファイルのパス
--kube-apiserver-arg value (flags) kube-apiserverプロセスのカスタマイズフラグ
--etcd-arg value (flags) etcdプロセスのカスタマイズフラグ
--kube-controller-manager-arg value (flags) kube-controller-managerプロセスのカスタマイズフラグ
--kube-scheduler-arg value (flags) kube-schedulerプロセスのカスタマイズフラグ
--kube-cloud-controller-manager-arg value (flags) kube-cloud-controller-managerプロセスのカスタマイズフラグ
--datastore-endpoint value (db) etcd、Mysql、Postgres、またはSqlite(デフォルト)のデータソース名を指定する [$K3S_DATASTORE_ENDPOINT]
--datastore-cafile value (db) データストアバックエンド通信を保護するために使用されるTLS認証局ファイル [$K3S_DATASTORE_CAFILE]
--datastore-certfile value (db) データストアバックエンド通信を保護するために使用されるTLS認証ファイル [$K3S_DATASTORE_CERTFILE]
--datastore-keyfile value (db) データストアバックエンド通信を保護するために使用されるTLSキー ファイル [$K3S_DATASTORE_KEYFILE]
--etcd-expose-metrics (db) クライアントインターフェースにetcdメトリクスを公開する (デフォルト: false)
--etcd-disable-snapshots (db) 自動etcdスナップショットを無効にする
--etcd-snapshot-name value (db) etcdスナップショットの基本名を設定する (デフォルト: etcd-snapshot-<unix-timestamp>) (デフォルト: "etcd-snapshot")
--etcd-snapshot-schedule-cron value (db) cron仕様でのスナップショット間隔時間。例: 5時間ごと '* */5 * * *' (デフォルト: "0 */12 * * *")
--etcd-snapshot-retention value (db) 保持するスナップショットの数 (デフォルト: 5)
--etcd-snapshot-dir value (db) データベーススナップショットを保存するディレクトリ (デフォルト: ${data-dir}/db/snapshots)
--etcd-snapshot-compress (db) etcdスナップショットを圧縮する
--etcd-s3 (db) S3へのバックアップを有効にする
--etcd-s3-endpoint value (db) S3エンドポイントURL (デフォルト: "s3.amazonaws.com")
--etcd-s3-endpoint-ca value (db) S3エンドポイントに接続するためのカスタムCA証明書
--etcd-s3-skip-ssl-verify (db) S3 SSL証明書の検証を無効にする
--etcd-s3-access-key value (db) S3アクセスキー [$AWS_ACCESS_KEY_ID]
--etcd-s3-secret-key value (db) S3シークレットキー [$AWS_SECRET_ACCESS_KEY]
--etcd-s3-bucket value (db) S3バケット名
--etcd-s3-region value (db) S3リージョン/バケットの場所 (オプション) (デフォルト: "us-east-1")
--etcd-s3-folder value (db) S3フォルダー
--etcd-s3-insecure (db) HTTPSを使用しないS3を無効にする
--etcd-s3-timeout value (db) S3タイムアウト (デフォルト: 5m0s)
--default-local-storage-path value (storage) ローカルプロビジョナーストレージクラスのデフォルトローカルストレージパス
--disable value (components) パッケージ化されたコンポーネントをデプロイせず、デプロイされたコンポーネントを削除する (有効な項目: coredns, servicelb, traefik, local-storage, metrics-server)
--disable-scheduler (components) Kubernetesのデフォルトスケジューラーを無効にする
--disable-cloud-controller (components) k3sのデフォルトクラウドコントローラーマネージャーを無効にする
--disable-kube-proxy (components) kube-proxyの実行を無効にする
--disable-network-policy (components) k3sのデフォルトネットワークポリシーコントローラーを無効にする
--disable-helm-controller (components) Helmコントローラーを無効にする
--node-name value (agent/node) ノード名 [$K3S_NODE_NAME]
--with-node-id (agent/node) ノード名にIDを追加する
--node-label value (agent/node) ラベルのセットでkubeletを登録および開始する
--node-taint value (agent/node) taintsのセットでkubeletを登録する
--image-credential-provider-bin-dir value (agent/node) クレデンシャルプロバイダープラグインバイナリが配置されているディレクトリのパス (デフォルト: "/var/lib/rancher/credentialprovider/bin")
--image-credential-provider-config value (agent/node) クレデンシャルプロバイダープラグインの設定ファイルのパス (デフォルト: "/var/lib/rancher/credentialprovider/config.yaml")
--docker (agent/runtime) (実験的) containerdの代わりにcri-dockerdを使用する
--container-runtime-endpoint value (agent/runtime) 組み込みのcontainerdを無効にし、指定されたパスのCRIソケットを使用する; --dockerと一緒に使用する場合、これはdockerソケットパスを設定する
--pause-image value (agent/runtime) containerdまたはdockerサンドボックス用のカスタマイズされたpauseイメージ (デフォルト: "rancher/mirrored-pause:3.6")
--snapshotter value (agent/runtime) デフォルトのcontainerdスナップショッターを上書きする (デフォルト: "overlayfs")
--private-registry value (agent/runtime) プライベートレジストリ設定ファイル (デフォルト: "/etc/rancher/k3s/registries.yaml")
--system-default-registry value (agent/runtime) すべてのシステムイメージに使用されるプライベートレジストリ [$K3S_SYSTEM_DEFAULT_REGISTRY]
--node-ip value, -i value (agent/networking) ノードの広告用IPv4/IPv6アドレス
--node-external-ip value (agent/networking) ノードの広告用外部IPv4/IPv6アドレス
--resolv-conf value (agent/networking) Kubeletのresolv.confファイル [$K3S_RESOLV_CONF]
--flannel-iface value (agent/networking) デフォルトのflannelインターフェースを上書きする
--flannel-conf value (agent/networking) デフォルトのflannel設定ファイルを上書きする
--flannel-cni-conf value (agent/networking) デフォルトのflannel cni設定ファイルを上書きする
--kubelet-arg value (agent/flags) kubeletプロセスのカスタマイズフラグ
--kube-proxy-arg value (agent/flags) kube-proxyプロセスのカスタマイズフラグ
--protect-kernel-defaults (agent/node) カーネルのチューニング動作。設定されている場合、カーネルのチューナブルがkubeletのデフォルトと異なる場合にエラーを発生させる。
--secrets-encryption 保存時のシークレット暗号化を有効にする
--enable-pprof (実験的) スーパーバイザーポートでpprofエンドポイントを有効にする
--rootless (実験的) ルートレスで実行する
--prefer-bundled-bin (実験的) ホストバイナリよりもバンドルされたユーザースペースバイナリを優先する
--selinux (agent/node) containerdでSELinuxを有効にする [$K3S_SELINUX]
--lb-server-port value (agent/node) スーパーバイザークライアントロードバランサーのローカルポート。スーパーバイザーとapiserverが同じ場所にない場合、このポートより1つ少ない追加ポートもapiserverクライアントロードバランサーに使用される (デフォルト: 6444) [$K3S_LB_SERVER_PORT]