この記事では、軽量デプロイのK3sを例に、すでにK8sクラスタをデプロイしている場合、この記事の後半の設定を参考に同様の設定を行うことができます。
このチュートリアルは、操作を行う前に必ず全文を読むようにしてください。そうしないと、デプロイ結果が期待通りにならない可能性があります。
Docker公式サイトで関連するインストール手順を見つけることができます。そして、クイックスタートの基本設定を使用してGZCTFを起動します。
k3sは軽量なk8sディストリビューションで、シングルマシンやマルチマシン上でk8sクラスタを迅速にデプロイすることができます。公式ドキュメントのURL:https://docs.k3s.io
もしサーバーが1台だけの場合、他の方法でデプロイすることを強くお勧めします:
最後に、どうしてもDockerを使用してk3sを実行したい場合、インストール時に以下のパラメータを追加してDockerバックエンドを指定できますが、強くお勧めしません。さまざまな互換性の問題を修正する必要があるかもしれず、多くの困難が生じる可能性があります。
もし一台のk3sインスタンスで255個を超える問題コンテナを実行したい場合は、k3sのインストール時にINSTALL_K3S_EXEC
を指定し、node-cidr-mask-size
を必要なサブネットサイズに変更する必要があります。
上記の設定はインストール後に変更できません。 CIDRを/16
に変更すると、65535個のPodをサポートできます。
上記の設定は、ノードのPodが使用するIPアドレス範囲を変更するだけであり、ノードのPod数制限を変更する場合は、以下を参照してください。
そして、以下の形式でk3sをインストールします。詳細はk3sのインストール設定を参照してください:
中国のユーザーは、以下の方法でインストールを高速化することができます:
マルチマシンのインストールとクラスタの構築については、公式ドキュメントを参照してください。
k3sの接続設定ファイルは/etc/rancher/k3s/k3s.yaml
にあり、以下のコマンドでエクスポートできます:
以下のコマンドを使用して、k3s control-panelが存在するマシンのIPを取得します:
もし127.0.0.1
が表示された場合、それはk3s control-panelが現在のマシンであることを意味します。ip a
を使用して現在のマシンのIPを確認してください。
IPアドレスを直接使用することも、ドメイン名を使用することもできますが、ドメイン名がk3s control-panelのあるマシンに解決され、GZCTFのマシンがその6443ポートにアクセスできることを確認する必要があります。
上記の出力内容をkube-config.yaml
として保存し、server
フィールドをk3s control-panelのあるマシンのIPに変更します。例えば、
これをGZCTFをデプロイするマシンに保存し、compose.yml
と同じフォルダに置きます。例えばkube-config.yaml
とします。
次にcompose.yml
のマウント情報を変更します:
同時にappsettings.json
を変更し、ContainerProvider
フィールドを設定します:
GZCTFを再起動すると、k3sをコンテナバックエンドとして使用できるようになります。すでにk8sを使用した経験があるユーザーは、上記の設定プロセスを参考にして、GZCTFを既存のk8sクラスタに接続することができます。
k3sのデフォルトのNodePortポート範囲は30000-32767ですが、これは要件と一致しない場合があります。そのため、必要に応じてk3sのNodePortポート範囲を変更することができます。
k3s control-panelが存在するマシンで以下のコマンドを実行します:
sudo nano /etc/systemd/system/k3s.service
ExecStart
の設定を編集し、service-node-port-range
を指定します。
sudo systemctl daemon-reload
sudo systemctl restart k3s
k3sのデフォルトのコンテナ数制限は110ですが、これは大量の小さなコンテナを含むゲームには適していないかもしれません。そのため、必要に応じてk3sのコンテナ数制限を変更することができます。
k3s control-panelが存在するマシンで以下のコマンドを実行します:
sudo nano /etc/rancher/k3s/kubelet.config
maxPods
の設定を編集します。
sudo nano /etc/systemd/system/k3s.service
ExecStart
の設定を編集し、kubelet-arg
を指定します。
sudo systemctl daemon-reload
sudo systemctl restart k3s
外部のコンテナイメージリポジトリは、k3sで直接使用することはできません。そのため、k3sにイメージリポジトリを追加する必要があります。
k3s control-panelが存在するマシンで以下のコマンドを実行します:
sudo nano /etc/rancher/k3s/registries.yaml
mirrors
の設定を編集し、必要なイメージリポジトリのアドレスを指定します。
sudo systemctl restart k3s