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

iSCSIボリューム

iSCSIボリュームにデータを保存するRancherが起動したKubernetesクラスターでは、kubeletがiSCSIボリュームに自動的に接続できない問題が発生することがあります。このエラーは、iSCSIイニシエータツールに関する互換性の問題が原因である可能性が高いです。この問題は、クラスターの各ノードにiSCSIイニシエータツールをインストールすることで解決できます。

iSCSIボリュームにデータを保存するRancherが起動したKubernetesクラスターは、kubeletの`rancher/hyperkube` Dockerイメージに埋め込まれているを利用します。各kubelet(つまり、イニシエータ)から、このツールはiSCSIボリューム(つまり、ターゲット)とのセッションを発見し、開始します。ただし、場合によっては、イニシエータとターゲットにインストールされているiSCSIイニシエータツールのバージョンが一致しないことがあり、接続エラーが発生します。

この問題に直面した場合、クラスター内の各ノードにイニシエータツールをインストールすることで回避できます。クラスターのノードにログインし、以下のいずれかのコマンドを入力することで、iSCSIイニシエータツールをインストールできます:

プラットフォーム [Package Name] インストールコマンド

Ubuntu/Debian

open-iscsi

sudo apt install open-iscsi

RHEL

iscsi-initiator-utils

yum install iscsi-initiator-utils -y

ノードにイニシエータツールをインストールした後、クラスターのYAMLを編集し、iSCSIバイナリと設定をマウントするようにkubeletの設定を編集します。以下のサンプルに示すように。

備考
  • iSCSIバイナリと設定をマウントするためにKubernetes YAMLを更新する前に、クラスターのノードに`open-iscsi`(deb)または`iscsi-initiator-utils`(yum)パッケージのいずれかがインストールされていることを確認してください。このパッケージがKubernetes YAMLでバインドマウントが作成される_前_にインストールされていない場合、Dockerは各ノードにディレクトリとファイルを自動的に作成し、パッケージのインストールが成功することを許可しません。

  • 以下の例のYAMLはK3sには適用されず、RKEクラスターのみに適用されます。K3sのkubeletはコンテナ内で実行されないため、追加のバインドは必要ありません。ただし、すべてのiSCSIツールはK3sノードにインストールする必要があります。

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"

RHEL 7.9を使用している場合は、以下のサンプルに示すようにファイル`/usr/lib64/libcrypto.so.10`をマウントする必要があります。

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.10:/usr/lib/libcrypto.so.10"

RHEL 8.6を使用している場合は、以下のサンプルに示すようにファイル`/usr/lib64/libcrypto.so.1.1`をマウントする必要があります。

services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.1.1:/usr/lib/libcrypto.so.1.1"

iscsiadmが正しく動作しているか確認するには、任意のノードでコマンド`docker exec kubelet iscsiadm --version`を実行できます。