type
status
date
slug
summary
tags
category
icon
password
リソース使用制限
このラボでは、プロジェクトでリソースの使用を制限するためにクォータを使用します。また、リソースにクォータを設定しないことがポッドのスケジューリングに与える影響も確認します。

到達目標

  • プロジェクトのリソースクォータとリソース制限を定義できるようになります。
  • クォータ違反エラーのトラブルシューティングができるようになります。
  • リソースリクエストにクォータが設定されていないことによるスケジューリングの問題をトラブルシュートできるようになります。

事前準備

  • 第7章「OpenShift Container Platformのインストール」に関するすべてのラボが完了しており、OpenShift Container Platformクラスタがマスターと2つのノードで稼働していることを確認してください。もし、まだであれば、マスター、node1、およびnode2ホストをリセットし、以下のコマンドをワークステーションホストで実行して環境が正しく設定されていることを確認します:
ワークステーションVMでターミナルウィンドウを開き、この演習で使用するファイルをダウンロードするために以下のコマンドを実行します:

手順

  1. クラスタ管理者として、リソースリクエストがデフォルトで設定されていない新しいポッドが作成されることを確認するためにプロジェクトを作成します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の create-project.sh スクリプトにまとめられています。スクリプトからコマンドをコピーして貼り付けて実行できます。
1.1. ワークステーションホストで、管理者ユーザーとしてOpenShiftにログインします:
1.2. OpenShiftクラスタの2つのノードに割り当てられているリソースを表示します:
表示される値は異なる場合がありますが、この演習では値がどのように変化するかに焦点を当てています。CPU Requests 列の値をメモしておいてください。
1.3. 新しいプロジェクト「resources」を作成します:
1.4. hello-openshift イメージからポッドを作成します:
1.5. hello ポッドが準備完了し、実行中になったら、ポッドが実行されているノードを取得します:
ポッドが準備完了し、実行中になるまで前のコマンドを何度か繰り返す必要があるかもしれません。コマンドで報告されたノード名をメモしておいてください。この情報は次のステップで必要です。
1.6. ポッドが実行されているノードについて、リソースが変更されていないことを確認します。前のステップで取得したノードのみに対して確認を行います:
※ポッドとそのデプロイメント設定に対して oc describe コマンドを使用し、リソースリクエストが設定されていないことを確認することもできます。
1.7. 次のステップに進む前に、「resources」プロジェクトからすべてのリソース(デプロイメント設定、イメージストリーム、ポッド、サービスなど)を削除します。
  1. クラスタ管理者として、プロジェクトにクォータとリソース制限(LimitRange)を追加して、プロジェクト内のポッドにデフォルトのリソースリクエストを設定します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の add-quota.sh スクリプトにまとめられています。
2.1. リソース制限(LimitRange)の定義を確認します。この設定は、CPUに対するデフォルトのリソースリクエストのみを指定しています:
Red Hat OpenShift Container Platform 3.9 のドキュメントでは、ファイルを最初から作成するためのサンプルファイルが提供されています。詳しくは、「Limit Rangesの設定」セクションを参照してください。
2.2. プロジェクトにリソース制限(LimitRange)を追加します:
2.3. プロジェクトにデフォルトのCPUリソースリクエストが設定されていることを確認します:
デフォルトのリソースリクエストを設定すると、そのコンピュートリソースに対するデフォルトのリソース制限も設定されることに注意してください。
2.4. 提供されたクォータの定義を確認します。この設定は、最大CPU使用量を設定します:
Red Hat OpenShift Container Platform 3.9 のドキュメントでは、ファイルを最初から作成するためのサンプルファイルが提供されています。詳しくは、「クォータの設定」セクションを参照してください。
2.5. プロジェクトにクォータを追加します:
2.6. プロジェクトにCPUクォータが設定されていることを確認します:
2.7. 次のステップに進む前に、開発者ユーザーにプロジェクト内でデプロイメントを作成する権限を付与します:
  1. 開発者ユーザーとして、プロジェクト内にポッドを作成し、ポッドがプロジェクトのクォータからリソースを消費することを確認します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の add-pod.sh スクリプトにまとめられています。
3.1. 開発者ユーザーとしてOpenShiftにログインします:
3.2. 「resources」プロジェクトに切り替えます:
3.3. 開発者ユーザーがプロジェクトのリソース制限とクォータを確認できるが、変更はできないことを確認します:
もし、oc delete コマンドでエラーが発生しなかった場合、管理者ユーザーとしてログインしている可能性があります。その場合、ステップ2に戻って、プロジェクトのリソース制限(LimitRange)とリソースクォータを再作成する必要があります。
oc get limitranges コマンドを使用することでも、同様の出力を得ることができます。
3.4. hello-openshift イメージからポッドを作成します:
もしエラーが発生した場合は、この演習の最初に作成されたポッドとその関連リソースを削除したか確認してください。
3.5. hello ポッドが準備できて実行されているのを待ちます:
注意:ポッドが準備完了し、実行されるまでに、前のコマンドを何回か繰り返す必要がある場合があります。
3.6. hello ポッドがプロジェクトのクォータを消費していることを確認します:
この出力は、ステップ2.6で得られた出力と比較してください。
ポッドがアイドル状態で、HTTPリクエストを処理していないため実際にはCPUを使用していませんが、そのリソースリクエストがプロジェクトのリソースクォータから消費されていることがわかります。
  1. オプション:ノードのリソースが少なくなっているか確認します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の check-nodes.sh スクリプトにまとめられています。
4.1. 管理者ユーザーとしてOpenShiftにログインします:
4.2. hello ポッドが実行されているノードを取得します:
ノード名をメモして、次のステップで使用します。
4.3. hello ポッドが実行されているノードにおいて、割り当てられたCPUリクエストがポッドのリソースリクエストと同じ量だけ増加したことを確認します。前のステップで取得したノード名を使用して、実行中のノードのみを確認します:
4.4. ポッドにCPUリソースリクエストが指定されているかを確認するために、oc describe コマンドを使用します:
4.5. 次のステップに進む前に、開発者ユーザーとして再度ログインします:
  1. hello デプロイメント設定をスケールして、プロジェクトのポッドからのリソース使用量を増加させ、それがプロジェクトのクォータから消費されることを確認します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の increase-bounded.sh スクリプトにまとめられています。
5.1. hello デプロイメント設定を2レプリカにスケールします:
5.2. 新しいポッドが準備できて実行されるまで待ちます:
ポッドが準備完了し、実行されるまでに、前のコマンドを何回か繰り返す必要がある場合があります。
5.3. 新しいポッドがプロジェクトのクォータに適合していることを確認します:
5.4. hello デプロイメント設定を4レプリカにスケールします。これはプロジェクトのクォータを超えることになります:
5.5. 数分待って、新しいhelloポッドが3つ作成されたことを確認しますが、4番目のポッドは作成されません。4番目のポッドはプロジェクトのクォータを超えてしまうためです:CPUリソースリクエストの合計は1000ミリコアになりますが、クォータはこれを900ミリコアに制限しています:
エラーは表示されません。デプロイメント設定は、4番目のポッドを作成するために必要な設定変更を待っています:
5.6. プロジェクトのイベントリストを取得します。これにより、レプリケーションコントローラーがクォータ違反のために4番目のポッドを作成できなかったことが確認できます:
5.7. 次のステップに進む前に、hello デプロイメント設定を1レプリカにスケールバックします:
5.8. 数秒待って、1つの hello ポッドのみが実行中であることを確認します:
  1. プロジェクトのクォータで制限されないリソースリクエストを hello ポッドに追加します。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の increase-unbounded.sh スクリプトにまとめられています。
6.1. hello デプロイメント設定に256Miのメモリリクエストを追加します:
6.2. 新しいポッドが準備完了して実行され、古いポッドが削除されるのを待ちます:
新しいポッドが準備完了し、古いポッドが消えるまで前のコマンドを何回か繰り返す必要があるかもしれません。
6.3. 新しいポッドにCPUリクエストに加えてメモリリクエストが追加されていることを確認します:
6.4. メモリリクエストがプロジェクトのクォータにカウントされていないことを確認します:
プロジェクトのクォータの観点では、何も変更されていないことがわかります。
  1. メモリリソースリクエストをクラスタ内のどのノードの容量をも超える値に増やします。 このステップのコマンドは、/home/student/DO285/labs/monitor-limit フォルダー内の increase-toomuch.sh スクリプトにまとめられています。
7.1. hello デプロイメント設定のメモリリクエストを8GiBに変更します。もっとも容量の大きいノードでも4GiBしかメモリがありません:
7.2. 新しいデプロイポッドが作成されますが、新しいポッドを作成できず、ポッドは保留状態になります:
デプロイポッドは新しいポッドが準備完了するための設定変更を長時間待ち続けます。その間、前回のデプロイメントからの hello ポッドは削除されず、アプリケーションユーザーへのサービスの中断を避けるようになっています。
次のエラーが表示されるまで待たないでください。エクササイズを続けてください:
7.3. プロジェクトのイベントリストを取得します。これにより、ポッドをいずれのノードにもスケジュールできなかったという警告が表示されます。メモリ不足が原因です:
クリーンアップ
管理者ユーザーとしてログインし、このエクササイズのために作成したプロジェクトを削除します:
これで、ガイド付きエクササイズは終了です。
 
71- 第16章:OpenShiftの管理と監視-1:リソース要求と制限の説明73- 第16章:OpenShiftの管理と監視-3:OpenShiftアップグレードの説明
Loading...
minami
minami
一个普通的干饭人🍚
Announcement

🎉 ブログへようこそ 🎉

notion image
名前:みなみ独立事務所
性別:男
国籍:China
完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

📚 主な内容

💻 IT・システム開発
🏠 不動産 × 宅建士
🎓 MBA 学習記録

🔍 コンテンツの探し方

現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
気になるテーマを探す際は、タグ検索の利用をおすすめします。