Ubuntu を構成する

Google Distributed Cloud を使用するには、ノードマシンの基本オペレーティング システムを構成する必要があります。このページでは、必要な構成を完了するために必要な手順を説明します。Google Distributed Cloud の要件のトラブルシューティングの詳細については、既知の問題をご覧ください。

始める前に

サポートされているバージョンのオペレーティング システムと Ubuntu Hardware Enablement(HWE)カーネルを使用していることを確認します。サポートされているバージョンのリストについては、 オペレーティングシステムの選択をご覧ください。

cgroupsv2 を有効にする

ベアメタル版 Google Distributed Cloud ソフトウェアのみバージョン 1.35 以降では cgroupsv2 が必要です。クラスタをアップグレードまたは作成するには、オペレーティング システムで cgroupsv2 をサポートしている必要があります。

プリフライト チェックで cgroupsv1 が検出されると、Google Distributed Cloud はクラスタの作成またはアップグレードを阻止します。オペレーティング システムを cgroupsv2 に移行する方法については、Kubernetes ドキュメントの cgroup v2 への移行をご覧ください。

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

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

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

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

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

  • 次のコマンドを使用して、パッケージ管理システムが正しく動作していることを確認します。

    sudo apt-get check
    

    エラーがない場合、出力は次の例のようになります。

    # Reading package lists... Done
    # Building dependency tree
    # Reading state information... Done
    

Uncomplicated Firewall(UFW)を無効にする

  1. ufw を無効にします。

    sudo ufw disable
    
  2. ufw が無効になっていることを確認します。

    sudo ufw status
    # Status: inactive
    

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

Google Distributed Cloud は、次のシナリオでベアメタル マシンに Docker をインストールする際に役立ちます。

  • ベアメタル マシンに Docker がインストールされていない場合は、bmctl によって 20.10.0 以降がインストールされます。
  • ベアメタル マシンに Docker 19.03.5 以前がインストールされている場合は、bmctl によって Docker がバージョン 20.10.0 以降にアップグレードされます。

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

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

    sudo apt-get remove docker docker-engine docker.io containerd runc
    
  2. パッケージ マネージャーを更新します。

    sudo apt-get update
    
  3. Docker 20.10.0+ をインストールします。

    sudo apt-get install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common \
      docker.io
    
  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
    

時刻同期の設定

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

System clock synchronized: yes

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

Ubuntu 22.04 を実行しているマシンの場合、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. いずれかの値を更新した場合は、マシンを再起動します。