RHEL を構成する

ベアメタル版 GKE を使用するには、ノードマシンの基本オペレーティング システムを構成する必要があります。このページでは、必要な構成を完了するために必要な手順を説明します。GKE on Bare Metal のトラブルシューティングの詳細については、トラブルシューティング ガイドをご覧ください。

準備

サポートされているバージョンのオペレーティング システムを使用していることをご確認ください。サポートされているバージョンのリストについては、オペレーティング システムの選択をご覧ください。

BPF Just In Time コンパイラを有効にする

オペレーティング システムのカーネルで、BPF Just In Time コンパイラ オプションが有効(CONFIG_BPF_JIT=y)になっている必要があります。

  • このオプションが有効かどうかを確認するには、次のコマンドを実行します。

    grep CONFIG_BPF_JIT /boot/config-$(uname -r)
    

パッケージ管理システムを検証する

RedHat のユーザー名とパスワードを設定済みであり、構成しているマシンへの root 権限を付与されていることを確認します。パッケージ マネージャーの検証手順は次のとおりです。

  1. ご利用のオペレーティング システムを登録していない場合は、RedHat のユーザー名とパスワードを使用して RedHat に登録し、アップデートをダウンロードしてください。

    sudo subscription-manager register
    
    sudo subscription-manager refresh
    
    sudo subscription-manager attach --auto
    
  2. アップデートを確認します。

    sudo dnf check-update
    

    出力にエラーがないことと、最後のメタデータの有効期限が含まれていることを確認します。次に例を示します。

    Updating Subscription Management repositories.
    ...
    # Last metadata expiration check: ...
    ...
    

firewalld の構成と無効化

firewalld は、GKE on Bare Metal で使用するために構成することも、無効にすることもできます。firewalld の構成については、ネットワーク要件ページの firewalld ポートの構成をご覧ください。

firewalld は、次の手順で無効にします。

  1. firewalld を無効にします。

    sudo systemctl stop firewalld
    
    sudo systemctl disable firewalld
    
  2. firewalld のステータスをチェックして、無効になっていることを確認します。

    sudo systemctl status firewalld | grep "Active"
    # Output
    # Active: inactive (dead)
    

ワークステーションに Docker を構成する

Docker を手動でインストールする手順は次のとおりです。

  1. 以前の Docker バージョンをすべて削除します。

    sudo dnf remove docker \
        docker-client \
        docker-client-latest \
        docker-common \
        docker-latest \
        docker-latest-logrotate \
        docker-logrotate \
        docker-engine
    
  2. podman-manpages を削除します。

    sudo dnf remove podman-manpages
    
  3. Docker 20.10.0 以降のインストール

    sudo dnf install -y yum-utils
    
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/rhel/docker-ce.repo
    
    sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io
    
    sudo systemctl start docker
    
  4. バージョン 20.10.0 以降が実行されていることを確認します。

    sudo docker version
    
  5. 出力と次の例を比較して、クライアントとサーバーのバージョンが 20.10.0 以降であることを確認します。

    Client: Docker Engine - Community
    Version:           25.0.3
    ...
    Server: Docker Engine - Community
    Engine:
    Version:          25.0.3
    
  6. Docker が動作していることを確認します。

    docker run hello-world
    

    次のように表示されます。

    Hello from Docker!
    

    This message shows that your installation appears to be working correctly.

時刻同期の設定

時刻同期は、指定した外部時間基準を使用して、ノードマシンの時計を設定することで構成されます。時刻同期は、イベント ロギングや指標収集など、時間的制約のあるクラスタ アクティビティにとって重要です。ノードマシンのカーネルは、ノード上で実行されるコンテナのクロックを制御します。適切な時刻同期を保証するには、利用可能なサービス(chronysystemd-timesyncdntp、または ntpdate)のいずれかを使用して、ネットワーク タイム プロトコル(NTP)サービスをマシンにインストールします。timedatectl を実行して、システム クロックが同期していることを確認します。timedatectl の出力には次のステータスが含まれます。

System clock synchronized: yes

Linux カーネルの inotify の上限が最小値以上であることを確認する

RHEL 9 を実行しているマシンの場合、Linux カーネル inotify の最大ユーザー インスタンスとユーザー ウォッチの上限は、次の値以上または次の値と等しくする必要があります。

  • fs.inotify.max_user_instances: 8192
  • fs.inotify.max_user_watches: 524288

これらの値がノードマシンで正しく設定されるように以下のことを確認します。

  1. max_user_instances の値を確認します。

    cat /proc/sys/fs/inotify/max_user_instances
    
  2. 必要に応じて、max_user_instances を最小値に更新します。

    echo 'fs.inotify.max_user_instances=8192' | sudo tee --append /etc/sysctl.conf
    
  3. max_user_watches の値を確認します。

    cat /proc/sys/fs/inotify/max_user_watches
    
  4. 必要に応じて、max_user_watches を最小値に更新します。

    echo 'fs.inotify.max_user_watches=524288' | sudo tee --append /etc/sysctl.conf
    
  5. いずれかの値を更新した場合は、マシンを再起動します。

ベスト プラクティス

インストールを簡素化するために、ヘッドレス管理の最小限のインストールを使用して RHEL を構成することをおすすめします。また、ネットワーク接続を有効にし、デフォルトの DHCP を使用するか、有効な静的 IP アドレスとネットワーク情報を指定します。cloud.google.com などの必要な外部リソースにマシンが接続できることを確認してください。

Docker の実行に失敗した場合は、次のコマンドで Docker デーモンが動作していることを確認します。

sudo systemctl start docker