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

エアギャップインストール

このガイドでは、エアギャップ(された)環境でK3sをインストールするための三段階プロセスを説明します。

これらの手順で言及されている資産については、Prime Artifacts URLにリストされている任意のK3s Primeバージョンを使用できます。Prime Artifacts URLの詳細については、https://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime専用のドキュメント]をご覧ください。認証が必要です。https://scc.suse.com/home[SUSEカスタマーセンター(SCC)]の資格情報を使用してログインしてください。

イメージをロードする

各イメージロード方法には異なる要件があり、異なるエアギャップ(された)シナリオに適しています。インフラストラクチャとセキュリティ要件に最も適した方法を選択してください。

  • プライベートレジストリ方式

  • 手動でイメージをデプロイする方法

  • 埋め込みレジストリミラー

これらの手順は、すでにエアギャップ環境にノードを作成し、バンドルされたcontainerdをコンテナランタイムとして使用し、OCI準拠のプライベートレジストリが環境に利用可能であることを前提としています。

まだプライベートDockerレジストリを設定していない場合は、https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry[公式レジストリのドキュメント]を参照してください。

レジストリYAMLを作成し、イメージをプッシュする

  1. 実行するK3sのバージョンに対して、https://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime Artifacts URL]ページからアーキテクチャ用のイメージアーカイブを取得してください。

  2. `docker image load k3s-airgap-images-amd64.tar.zst`を使用して、tarファイルからdockerにイメージをインポートします。

  3. `docker tag`と`docker push`を使用して、ロードしたイメージにタグを再付与し、プライベートレジストリにプッシュします。

  4. プライベートレジストリの設定ガイドに従って、`registries.yaml`ファイルを作成および構成してください。

  5. 以下のK3sのインストールセクションに進んでください。

これらの手順は、すでにエアギャップ環境でノードを作成し、バンドルされたcontainerdをコンテナランタイムとして使用しており、プライベートレジストリを使用できないか、使用したくないことを前提としています。

この方法では、必要なイメージを各ノードに手動でデプロイする必要があり、プライベートレジストリを運用することが実用的でないエッジデプロイメントに適しています。

イメージディレクトリとエアギャップイメージtarボールを準備します。

  1. インターネットに接続可能なマシンで、インストール予定のK3sのバージョンに対するhttps://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime Artifacts URL]ページから、アーキテクチャ用のイメージアーカイブをダウンロードします。次に例を示します。

    curl -L -o k3s-airgap-images-amd64.tar.zst "<PRIME-ARTIFACTS-URL>/k3s/v1.35.1%2Bk3s1/k3s-airgap-images-amd64.tar.zst"
  2. イメージアーカイブをエアギャップノードに転送します。エージェントのイメージディレクトリに配置します。例えば、

    sudo mkdir -p /var/lib/rancher/k3s/agent/images/
    sudo curl -L -o /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.zst ""https://github.com/k3s-io/k3s/releases/download/v1.33.1%2Bk3s1/k3s-airgap-images-amd64.tar.zst"
    sudo cp k3s-airgap-images-amd64.tar.zst /var/lib/rancher/k3s/agent/images/k3s-airgap-images-amd64.tar.zst
  3. 以下のK3sのインストールセクションに進んでください。

条件付きイメージインポートを有効にします。

バージョンゲート

条件付きイメージインポートは、2025年5月のリリースから利用可能です:v1.33.1+k3s1、v1.32.5+k3s1、v1.31.9+k3s1、v1.30.13+k3s1。

イメージアーカイブは、k3sが起動するたびにインポートされます。これは、すべてのイメージが一貫して利用可能であることを保証するために行われます。たとえ一部のイメージが前回の起動以降に削除またはプルーニングされていてもです。ただし、これはすべてのアーカイブが処理されるまでkubeletが起動しないため、起動を遅延させます。この遅延を軽減するために、最後にインポートされてから変更されたtarアーカイブのみをインポートするオプションがあります。再起動をまたいだ場合でも適用されます。

この機能を有効にするには、イメージディレクトリに`.cache.json`ファイルを作成します:

touch /var/lib/rancher/k3s/agent/images/.cache.json

キャッシュファイルは、アーカイブが処理される際にメタデータをファイルとして保存します。K3sのその後の再起動では、アーカイブのサイズと変更時間が同じである限り、イメージはインポートされません。

この機能が有効になっている場合、k3sが起動するたびにすべてのイメージが利用可能であることを保証することはできません。前回の起動以降にイメージが削除またはプルーニングされた場合は、手動でイメージを再インポートする必要があります。次のいずれかです。

  • `ctr image import`を使用して、アーカイブを手動でインポートします。

  • イメージを含むアーカイブのタイムスタンプを変更するには、`touch`を使用します。

  • `.cache.json`ファイルの内容をクリアし、k3sを再起動してください。

K3sには、埋め込みの分散OCI準拠レジストリミラーが含まれています。 有効にされ、適切に構成されている場合、任意のノードのcontainerdイメージストアにあるイメージは、外部イメージレジストリへのアクセスなしに他のクラスターのメンバーによってプルされることができます。

ミラーされたイメージは、アップストリームのレジストリ、レジストリミラー、またはエアギャップイメージのtarアーカイブから取得される場合があります。 埋め込みの分散レジストリミラーを有効にする方法の詳細については、埋め込みレジストリミラーのドキュメントを参照してください。

K3sをインストールする

前提条件

K3sをインストールする前に、上記のイメージをロードするオプションのいずれかを選択して、K3sがインストールに必要なイメージを事前に配置してください。

バイナリとスクリプトをダウンロードする

  • Prime Artifacts URLページからK3sのバイナリをダウンロードし、エアギャップイメージを取得するために使用したのと同じバージョンに一致させてください。バイナリを各エアギャップ(された)ノードの`/usr/local/bin`に配置し、実行可能であることを確認してください。

    sudo curl -Lo /usr/local/bin/k3s <PRIME-ARTIFACTS-URL>/k3s/v1.35.1%2Bk3s1/k3s
    sudo chmod +x /usr/local/bin/k3s
  • get.k3s.ioでK3sインストールスクリプトをダウンロードしてください。インストールスクリプトを各エアギャップ(された)ノードの任意の場所に配置し、`install.sh`という名前を付けてください。

    curl -Lo install.sh https://get.k3s.io
    chmod +x install.sh
デフォルトネットワークルートを設定する - デフォルトルートのないノードに必要です。

ノードにデフォルトルートを持つインターフェースがない場合、デフォルトルートを構成する必要があります。ダミーインターフェースを介したブラックホールルートでも構いません。K3sは、ノードのプライマリIPを自動検出し、kube-proxyのClusterIPルーティングが正しく機能するためにデフォルトルートを必要とします。ダミールートを追加するには、次の手順を実行してください:

ip link add dummy0 type dummy
ip link set dummy0 up
ip addr add 203.0.113.254/31 dev dummy0
ip route add default via 203.0.113.255 dev dummy0 metric 1000
SELinux RPMをダウンロードする - SELinuxが有効なエアギャップ(された)ノードに必要です。

SELinuxが有効なエアギャップ(された)ノードで実行している場合、K3sをインストールする前にk3s-selinux RPMを手動でインストールする必要があります。このRPMには、K3sが正しく動作するために必要なSELinuxポリシーが含まれています。最新のRPMバージョンはhttps://github.com/k3s-io/k3s-selinux/releases/latest[こちら]で見つけることができます。例えば、CentOS 8の場合:

# On an internet accessible machine:
curl -LO https://github.com/k3s-io/k3s-selinux/releases/download/v1.6.stable.1/k3s-selinux-1.6-1.el8.noarch.rpm

# Transfer RPM to air-gapped machine
sudo yum install ./k3s-selinux-1.6-1.el8.noarch.rpm

k3s-selinux RPMのインストールには、OSに以下の依存関係が必要です:

  • container-selinux

  • policycoreutils

  • selinux-policy

詳細については、SELinuxセクションを参照してください。

インストールスクリプトの実行

以下に説明するように、1台または複数のサーバーにK3sをインストールできます。

  • 単一サーバーの構成

  • 高可用性のための環境設定

単一サーバーにK3sをインストールするには、サーバーノードで次の操作を行います:

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh

追加のエージェントを追加するには、各エージェントノードで次の操作を行います:

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> ./install.sh

外部DBを使用した高可用性または組み込みDBを使用した高可用性ガイドを参照してください。インストールコマンドを調整するため、`INSTALL_K3S_SKIP_DOWNLOAD=true`を指定し、curlを介さずにローカルでインストールスクリプトを実行します。また、k3sに引数を供給するために`INSTALL_K3S_EXEC='args'`を利用します。

例えば、外部DBを使用した高可用性ガイドのステップ2では、以下のことが言及されています:

curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s sh -s - server \
  --token=SECRET \
  --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"

その代わりに、以下のようにそのような例を修正します:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token=SECRET' \
K3S_DATASTORE_ENDPOINT='mysql://username:password@tcp(hostname:3306)/database-name' \
./install.sh

K3sの`--resolv-conf`フラグはkubeletに渡され、ホストにアップストリームのネームサーバーが設定されていないエアギャップネットワークでのポッドDNS解決の構成に役立つ可能性があります。

アップグレード

  • 手動アップグレード

  • 自動アップグレード方法

エアギャップ環境をアップグレードするには、次の方法で実行できます:

  1. K3sのアップグレード対象のバージョンに対するhttps://scc.suse.com/rancher-docs/rancherprime/latest/en/reference-guide.html#prime-artifacts-url[Prime Artifacts URL]ページから新しいエアギャップイメージ(tarファイル)をダウンロードしてください。各ノードの`/var/lib/rancher/k3s/agent/images/`ディレクトリにtarを配置してください。古いtarファイルを削除してください。

  2. 各ノードの`/usr/local/bin`にある古いK3sバイナリをコピーして置き換えてください。インストールスクリプトをhttps://get.k3s.ioにコピーしてください(前回のリリース以降に変更されている可能性があるため)。同じ環境変数を使用して、過去に行ったのと同様にスクリプトを再度実行してください。

  3. K3sサービスを再起動してください(インストーラーによって自動的に再起動されない場合)。

K3sは自動アップグレードをサポートしています。エアギャップ(された)環境でこれを有効にするには、必要なイメージがプライベートレジストリに利用可能であることを確認する必要があります。

アップグレード対象のK3sのバージョンに対応するrancher/k3s-upgradeのバージョンが必要です。注意してください。イメージタグはK3sリリースの``を`-`に置き換えます。Dockerイメージは``をサポートしていないためです。

デプロイするsystem-upgrade-controllerマニフェストYAMLに指定されているsystem-upgrade-controllerとkubectlのバージョンも必要です。system-upgrade-controllerの最新リリースをhttps://github.com/rancher/system-upgrade-controller/releases/latest[こちら]で確認し、system-upgrade-controller.yamlをダウンロードして、プライベートレジストリにプッシュする必要があるバージョンを特定してください。例えば、system-upgrade-controllerのリリースv0.4.0では、これらのイメージがマニフェストYAMLに指定されています:

rancher/system-upgrade-controller:v0.4.0
rancher/kubectl:v0.17.0

必要なrancher/k3s-upgrade、rancher/system-upgrade-controller、およびrancher/kubectlイメージをプライベートレジストリに追加したら、自動アップグレードガイドに従ってください。