Post on 17-Aug-2020
FUJITSU Storage ETERNUS Data Services Platform Software
Kubernetes デプロイメントガイド
P3AG-4222-01Z0
Kubernetes デプロイメントガイド2
目次
第 1 章 ETERNUS DSP ストレージを使用した Kubernetes の設定 ..................31.1 ネットワークの準備 .......................................................................................... 3
1.2 アクセスネットワーク ...................................................................................... 4
第 2 章 Kubernetes 用 CSI ボリューム・プラグインのデプロイ......................52.1 Kubernetes のインストール/構成 .................................................................... 5
第 3 章 Kubernetes でのストレージのプロビジョニング ...............................83.1 ボリュームの作成 ............................................................................................. 8
3.2 ボリュームを使用したアプリケーションの作成 .................................................. 8
3.3 オプション:シークレット機能 ......................................................................... 9
第 4 章 ログの収集.....................................................................................10
第 5 章 その他の環境変数 ...........................................................................11
第 1 章
ETERNUS DSP ストレージを使用したKubernetes の設定Kubernetes ワーカノードは、iSCSI ポートを介して ETERNUS DSP ストレージにアクセスします。iSCSIは、コンピュート層と同じネットワークスタックをストレージに使用します。ETERNUS DSP の『インストレーションガイド』に従ってネットワークを設定するように注意してください。
1.1 ネットワークの準備複数のプライベート・ネットワークが ETERNUS DSP のノード間通信と管理に使用されます。アクセスネットワークは、クライアントノード(Kubernetes ワーカノードなど)がストレージとの通信に使用するストレージ・ネットワークです。このアクセスネットワークは通常、ストレージ専用です。
すなわち、アクセスネットワークの他のトラフィックは別の VLAN に分離します。ETERNUS DSP ネットワーキングを計画する際には、これらすべての異なるネットワークセグメントをそれぞれの VLANで構築および導入して、ストレージパフォーマンスを最適化する必要があります。
図 1.1 典型的な ETERNUS DSP ネットワークトポロジー
Kubernetes デプロイメントガイド3
第 1 章 ETERNUS DSP ストレージを使用した Kubernetes の設定 1.2 アクセスネットワーク
1.2 アクセスネットワーク
Kubernetes ワーカノードは、アクセスネットワークの iSCSI ポートを介して ETERNUS DSP ストレージにアクセスします。各 DSP ノードは、10Gbit/s Ethernet(GbE)インターフェースを介してアクセスネットワークに接続します。アクセスネットワークは、従来の IP ベースのネットワークである必要があります。ノード障害時にはターゲット IP アドレスがフロートし、負荷再分散アクティビティの一部として発生するターゲットポートの再バランシングアクティビティが実行されます。
アクセスネットワークは、フローティング IP アドレスを使用して iSCSI LUN をホストに提供します。指定する IP アドレス範囲は、少なくとも ETERNUS DSP ストレージシステム内のノード数と同じである必要があります。ただし、使用可能な IP アドレスが多いほど、システムの負荷分散は向上します。ETERNUS DSP は、10 ノードまでの小規模システムには少なくとも 32 個のアドレス、20 ノードまでの中規模システムには 64 個のアドレス、20 ノード以上の大規模システムには 128 ~ 250 個のアドレスを推奨しています。最新の推奨事項の詳細については、ETERNUS DSP の『インストレーションガイド』および『 ユーザーズガイド』を参照してください。
ターゲット iSCSI ポートが示すターゲット IP アドレスは、アクセスネットワーク IP プールから取得されます。プール内の IP アドレスは、アクセスネットワーク IP ブロックによって定義されます。ストレージ・インスタンスに割り当てる IP プールと IP アドレスのブロックを少なくとも 1 つ作成する必要があります。ユーザーインターフェースでは、アクセスネットワークポートはアクセス VIP1 およびアクセス VIP2 として識別されます。
Kubernetes デプロイメントガイド4
第 2 章
Kubernetes 用 CSI ボリューム・プラグインのデプロイこのプラグインは、コンテナ用の分散データストレージとして ETERNUS DSP ストレージバックエンドを使用します。本プラグインのサポート構成については、ダウンロードページを参照してください。
2.1 Kubernetes のインストール/構成
以下の手順をルート権限で実施してください。ホスト上で iscsid を使用するには、以下の手順に従います(これらは、CSI プラグインをインストールする前に実行する必要があります)。
1 iscsid を kubernetes ホストにインストールします。• Ubuntu の場合
• CentOS の場合
2 iscsid が動作していることを確認します。
3 CSI プラグインを GitHub からダウンロードします。<VERSION> は GitHub 上での Commit ID(40 桁の数字 ) を示します。CSI プラグインのサポート済みバージョンをダウンロードページで確認してください。
$ apt install open-iscsi
$ yum install iscsi-initiator-utils
$ ps -ef | grep iscsidroot 12494 996 0 09:41 pts/2 00:00:00 grep --color=auto iscsidroot 13326 1 0 Dec17 ? 00:00:01 /sbin/iscsidroot 13327 1 0 Dec17 ? 00:00:05 /sbin/iscsid
$ wget https://github.com/Datera/datera-csi/archive/<VERSION>.zip$ unzip <VERSION>.zip$ cd datera-csi-<VERSION>
Kubernetes デプロイメントガイド5
第 2 章 Kubernetes 用 CSI ボリューム・プラグインのデプロイ 2.1 Kubernetes のインストール/構成
4 iscsi-recv サービス・インストーラを実行します。
5 iscsi-recv サービスが実行中であることを確認します。
6 deploy/kubernetes/release/1.0/csi-datera-1.0.7.yaml を変更し、yaml 内の以下の環境変数の値を更新します。• DAT_MGMT-- システムの管理 IP• DAT_USER-- アカウントのユーザー名• DAT_PASS-- アカウントのパスワード• DAT_TENANT-- アカウントで使用するテナント• DAT_API-- 通信時に使用する API バージョン(現在 2.2 のみサポート)
yaml 内に上記の値ごとに 2 箇所あり、それぞれ変更する必要があります。さらに、yaml には StorageClass(dat-block-storage)が組み込まれています。要件に応じて、自由に変更または削除できます。ボリュームのパラメーターは、StorageClass の parameters セクション内に配置できます。以下の例では、レプリカを 3、QoS を最大 1000IOPS としてボリュームを構成します。すべてのパラメーターは文字列である必要があります(数字とブール値は引用符で囲む必要があります)。
7 編集した yaml を使用して、デプロイします。
$ ./assets/setup_iscsi.sh[INFO] Dependency checking[INFO] Downloading iscsi-recv[INFO] Verifying checksum[INFO] Changing file permissions[INFO] Registering iscsi-recv serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/iscsi-recv.service to /lib/systemd/system/iscsi-recv.service.[INFO] Starting iscsi-recv service[INFO] Verifying service started correctlyroot 4879 1 0 19:50 ? 00:00:00 /var/datera/iscsi-recv -addr unix:////var/datera/csi-iscsi.sock
$ systemctl --all | grep iscsi-recviscsi-recv.service loaded active running iscsi-recv container to host iscsiadm adapter service
kind: StorageClassapiVersion: storage.k8s.io/v1metadata: name: dat-block-storage namespace: kube-system annotations: storageclass.kubernetes.io/is-default-class: "true"provisioner: io.datera.csi.dspparameters: replica_count: "3" total_iops_max "1000"
$ kubectl create -f deploy/kubernetes/release/1.0/csi-datera-secrets-1.0.7.yaml
Kubernetes デプロイメントガイド6
第 2 章 Kubernetes 用 CSI ボリューム・プラグインのデプロイ 2.1 Kubernetes のインストール/構成
プラグインでサポートされるパラメーターのリストを以下に示します。名称 デフォルト
replica_count 3
placement_mode hybrid
ip_pool default
template ""
round_robin false
read_iops_max 0
write_iops_max 0
total_iops_max 0
read_bandwidth_max 0
write_bandwidth_max 0
total_bandwidth_max 0
iops_per_gb 0
bandwidth_per_gb 0
fs_type ext4 ('ext4' または 'xfs' を指定可能)
fs_args -E lazy_itable_init=0,lazy_journal_init=0,nodiscard -F
delete_on_unmount false
yaml ファイル内のすべてのパラメーターは文字列で指定する必要があります(それ以外の場合はkubectl パーサが失敗します)。文字列かどうか区別が難しい場合は、すべてのパラメーターを二重引用符("")で囲んでください。
Kubernetes デプロイメントガイド7
第 3 章
Kubernetes でのストレージのプロビジョニング3.1 ボリュームの作成
PVC を作成します。次のファイルを pvc.yaml という名前で保存します。
3.2 ボリュームを使用したアプリケーションの作成次のファイルを app.yaml という名前で保存します。
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: csi-pvc namespace: defaultspec: accessModes: - ReadWriteOnce resources: requests: storage: 100Gi storageClassName: dat-block-storage
$ kubectl create -f pvc.yaml
kind: PodapiVersion: v1metadata: name: my-csi-appspec: containers: - name: my-app-image image: alpine volumeMounts: - mountPath: "/data" name: my-app-volume command: [ "sleep", "1000000" ] volumes: - name: my-app-volume persistentVolumeClaim: claimName: csi-pvc
$ kubectl create -f app.yaml
Kubernetes デプロイメントガイド8
第 3 章 Kubernetes でのストレージのプロビジョニング 3.3 オプション:シークレット機能
3.3 オプション:シークレット機能ユーザー名およびパスワードを直接 yaml ファイルに入れる代わりに、kubernetes のシークレット機能を使うことができます。
最初にシークレットを作成します。これらは base64 でエンコードされた文字列です。必須のシークレットは、「ユーザー名」と「パスワード」です。以下のように変更し、secrets.yaml として保存します。
以下を実行し、シークレットを作成します。
「シークレット」yaml を使用して、CSI ドライバをインストールします。
「シークレット」yaml と通常の yaml で異なる点は、「ユーザー名」と「パスワード」フィールドにシークレットを使用することだけです。
これは、CSI ドライバをインストールする前に行う必要があります。
apiVersion: v1kind: Secretmetadata: name: datera-secret namespace: kube-systemtype: Opaquedata: # base64 encoded username # generate this via "$ echo -n 'your-username' | base64" username: YWRtaW4= # base64 encoded password # generate this via "$ echo -n 'your-password' | base64" password: cGFzc3dvcmQ=
$ kubectl create -f secrets.yaml
$ kubectl create -f csi-datera-secrets-1.0.7.yaml
Kubernetes デプロイメントガイド9
第 4 章
ログの収集assets フォルダーの csi_log_collect.sh を使用して、CSI プラグイン全体からログを収集することができます。Kubernetes マスターノード上で、以下のスクリプトを引数なしで実行します。
Kubernetes デプロイメントガイド10
第 5 章
その他の環境変数お客様の要件によっては、より柔軟な設定が必要になります。これらの環境変数を使用すると、プラグインの動作を任意に調整できます。注意して使用してください。
• DAT_SOCKETドライバが待機するソケット
• DAT_HEARTBEATハートビート機能を実行する間隔
• DAT_TYPEバイナリで公開する CSI サービス
• DAT_VOL_PER_NODEノードごとの最大ボリューム数
• DAT_DISABLE_MULTIPATHマルチパスを無効にします(ボンディングした NIC で使用する場合)。
• DAT_REPLICA_OVERRIDEレプリカ数の設定を 1 に上書き(シングル・ノード・システムの場合)
• DAT_METADATA_DEBUG(2KB のハード制限を確認するために)送信前にメタデータのサイズを計算します。
• DAT_DISABLE_LOGPUSHプラグインログの ETERNUS DSP システムへのプッシュを無効にします。
• DAT_LOGPUSH_INTERVALETERNUS DSP システムへのログプッシュの間隔を設定します。
• DAT_FORMAT_TIMEOUTボリュームフォーマットの呼び出しのタイムアウト時間 (デフォルト 60 秒) を設定します。
Kubernetes デプロイメントガイド11
FUJITSU Storage ETERNUS Data Services Platform SoftwareKubernetes デプロイメントガイド
P3AG-4222-01Z0
発行日 2020 年 3 月発行責任 富士通株式会社
● 本書の内容は、改善のため事前連絡なしに変更することがあります。● 本書の内容は、細心の注意を払って制作致しましたが、本書中の誤字、情報の抜け、
本書情報の使用に起因する運用結果に関しましては、責任を負いかねますので予めご了承願います。
● 本書に記載されたデータの使用に起因する第三者の特許権およびその他の権利の侵害については、当社はその責を負いません。
● 無断転載を禁じます。