この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

クラスタデータストア

etcd以外のデータストアを用いてKubernetesを実行できる機能により、K3sは他のKubernetesディストリビューションと差別化されています。この機能はKubernetesオペレーターに柔軟性を提供します。利用可能なデータストアの選択肢により、ご利用のユースケースに最適なデータストアを選択できます。次に例を示します。

  • チームにetcdの運用に関する専門知識がない場合は、MySQLやPostgreSQLのようなエンタープライズグレードのSQLデータベースを選択できます。

  • CI/CD環境でシンプルな一時的クラスターを実行する必要がある場合は、組み込みのSQLiteデータベースを使用できます。

  • エッジにKubernetesをデプロイし、高可用性のソリューションが必要だが、エッジでデータベースを管理する運用オーバーヘッドを負担できない場合は、組み込みのetcdの上に構築されたK3sの高可用性組み込みデータストアを使用できます。

K3sは以下のデータストアオプションをサポートしています:

  • 組み込み SQLite
    SQLiteは複数のサーバーを持つクラスターでは使用できません。
    SQLiteはデフォルトのデータストアであり、他のデータストアの設定が存在しない場合、またはディスク上に組み込みのetcdデータベースファイルが存在しない場合に使用されます。

  • 組み込みetcd
    複数のサーバーで組み込みetcdを使用するための詳細については、高可用性組み込みetcdのドキュメントを参照してください。 K3sが新しいetcdクラスターを初期化するように設定されている場合、既存のetcdクラスターに参加する場合、または起動時にディスク上にetcdデータベースファイルが存在する場合、組み込みetcdが自動的に選択されます。

  • 外部データベース
    複数のサーバーで外部データストアを使用するための詳細については、高可用性外部DBのドキュメントを参照してください。
    以下の外部データストアがサポートされています:

    • etcd(バージョン3.5.21に対して認証済み)

    • MySQL(バージョン5.7および8.0に対して認証済み)

    • MariaDB(バージョン10.11および11.4に対して認証済み)

    • PostgreSQL(バージョン15.12、16.7、および17.3に対して認証済み)

プリペアドステートメントサポート

K3sはDBからプリペアドステートメントのサポートを必要とします。これは、https://www.pgbouncer.org/faq.html#how-to-use-prepared-statements-with-transaction-pooling[PgBouncer]のような接続プーラーがK3sと連携するために追加の設定を必要とする可能性があることを意味します。

マルチマスターセットアップ

1より大きい`auto_increment_increment`または`auto_increment_offset`を設定するマルチマスターデータベースはサポートされていません。Kineは、リビジョンが0から始まり、キーが正常に挿入されるたびに必ず1ずつ増加することを期待しています。これは、MySQL/MariaDB用のGaleraなどの製品に影響を与えます。

外部データストア構成パラメータ

PostgreSQL、MySQL、またはetcdのような外部データストアを使用する場合は、K3sが接続方法を知るために`datastore-endpoint`パラメータを設定する必要があります。接続の認証と暗号化を構成するためのパラメータを指定することもできます。以下の表は、これらのパラメータを要約したもので、CLIフラグまたは環境変数として渡すことができます。

CLI Flag 環境変数 説明

--datastore-endpoint

K3S_DATASTORE_ENDPOINT

PostgreSQL、MySQL、またはetcdの接続文字列を指定します。これは、データストアへの接続を説明するために使用される文字列です。この文字列の構造は各バックエンドに特有であり、以下に詳細が記載されています。

--datastore-cafile

K3S_DATASTORE_CAFILE

データストアとの通信を保護するために使用されるTLS証明書機関(CA)ファイル。データストアがカスタム証明書機関によって署名された証明書を使用してTLS経由でリクエストを処理する場合、K3sクライアントが証明書を適切に検証できるように、このパラメータを使用してそのCAを指定できます。

--datastore-certfile

K3S_DATASTORE_CERTFILE

データストアへのクライアント証明書ベースの認証に使用されるTLS証明書ファイル。この機能を使用するには、データストアがクライアント証明書ベースの認証をサポートするように構成されている必要があります。このパラメータを指定する場合は、`datastore-keyfile`パラメータも指定する必要があります。

--datastore-keyfile

K3S_DATASTORE_KEYFILE

データストアへのクライアント証明書ベースの認証に使用されるTLSキーファイル。詳細については、前の`datastore-certfile`パラメータを参照してください。

ベストプラクティスとして、データベースの資格情報やその他の機密情報がプロセス情報の一部として公開されないように、これらのパラメータをコマンドライン引数ではなく環境変数として設定することをお勧めします。

データストアエンドポイントの形式と機能

前述のように、`datastore-endpoint`パラメータに渡される値の形式は、データストアのバックエンドに依存します。以下は、各サポートされている外部データストアの形式と機能の詳細です。

  • PostgreSQL

  • MySQL / MariaDB

  • etcd

最も一般的な形式では、PostgreSQLのデータストアエンドポイントパラメータは次の形式を持ちます:

postgres://username:password@hostname:port/database-name

より高度な設定パラメータが利用可能です。これらの詳細については、https://godoc.org/github.com/lib/pq.を参照してください。

データベース名を指定し、それが存在しない場合、サーバーはそれを作成しようとします。

エンドポイントとして`postgres://`のみを指定した場合、K3sは次のことを試みます:

  • ユーザー名とパスワードとして`postgres`を使用してlocalhostに接続します。

  • `kubernetes`という名前のデータベースを作成します。

最も一般的な形式では、MySQLおよびMariaDBの`datastore-endpoint`パラメータは次の形式を持ちます:

mysql://username:password@tcp(hostname:3306)/database-name

より高度な設定パラメータが利用可能です。これらの詳細については、https://github.com/go-sql-driver/mysql#dsn-data-source-nameを参照してください。

K3sのhttps://github.com/k3s-io/k3s/issues/1093[既知の問題]のため、`tls`パラメータを設定することはできません。TLS通信はサポートされていますが、たとえば、このパラメータを「skip-verify」に設定してK3sが証明書の検証をスキップすることはできません。

データベース名を指定し、それが存在しない場合、サーバーはそれを作成しようとします。

エンドポイントとして`mysql://`のみを指定した場合、K3sは次のことを試みます:

  • ユーザー`root`を使用して`/var/run/mysqld/mysqld.sock`のMySQLソケットに接続し、パスワードは使用しません。

  • `kubernetes`という名前のデータベースを作成します。

最も一般的な形式では、etcdの`datastore-endpoint`パラメータは次の形式を持ちます:

https://etcd-host-1:2379,https://etcd-host-2:2379,https://etcd-host-3:2379\

上記は、典型的な三ノードのetcdクラスターを前提としています。このパラメータは、1つ以上のカンマ区切りのetcd URLを受け入れることができます。