type
status
date
slug
summary
tags
category
icon
password
书籍
Red Hat OpenShift Container Platform アーキテクチャの概要
1. OpenShift Container Platformの特徴
OpenShiftは、Red Hat Enterprise Linux (RHEL)、Docker、およびKubernetesの上に構築されたモジュール型のコンポーネントとサービスのセットです。以下の機能を追加し、コンテナアプリケーションプラットフォームを提供します:
- リモート管理
- マルチテナンシー
- セキュリティ強化
- アプリケーションライフサイクル管理
- 開発者向けのセルフサービスインターフェース
2. OpenShiftソフトウェアスタックの構造
レイヤー | 役割と特徴 |
Red Hat Enterprise Linux (RHEL) | 基本OSとして動作 |
Docker | コンテナ管理APIとコンテナイメージ形式を提供 |
Kubernetes | クラスターの管理とマルチコンテナアプリケーションの構成・接続を管理 |
Etcd | 分散型キー・バリューストアとして、クラスタ内の設定や状態情報を管理 |
3. OpenShiftが追加する機能
- Kubernetes拡張: Etcdに保存される追加リソースタイプを提供し、Kubernetesと連携してOpenShiftの内部状態や設定を管理。
- コンテナ化されたサービス: ネットワークや認証などのインフラ機能を提供。多くのサービスがコンテナとして動作。
- RuntimesとxPaaS: 開発者向けのベースコンテナイメージを提供(例:プログラミング言語やデータベース)。
- DevOpsツールとユーザー体験: Web UIやCLIツールを提供し、アプリケーションやリソースを簡単に管理可能。
4. OpenShiftのクラスター構成
コンポーネント | 説明 |
マスター (Master) | Kubernetesクラスターのワークロードと通信を管理 |
ノード (Node) | アプリケーションをホストするサーバー |
ラベル (Label) | Kubernetesリソースに割り当てられるキー/値ペア(スケジューリングや操作のためのフィルタリングに使用) |
- 注記: OpenShiftクラスターはKubernetesクラスターを拡張したもので、CLIやWebコンソールを活用して効率的に管理できます。
5. Kubernetesの主なリソースタイプ
リソースタイプ | 説明 |
Pod | IPアドレスやストレージを共有するコンテナの集合体 |
Service | クライアントがPodにアクセスするためのIP/ポートを定義 |
Replication Controller | Podを水平スケーリングするためのフレームワーク |
Persistent Volume (PV) | ネットワークストレージを提供し、コンテナ内でデータを保存可能 |
Persistent Volume Claim (PVC) | Podがストレージを要求するためのリソース |
6. OpenShiftが提供する独自のリソースタイプ
リソースタイプ | 説明 |
Deployment Configuration (dc) | イメージから作成されたPodのセットを管理し、ローリングアップデートなどを実行 |
Build Configuration (bc) | Source-to-Image (S2I)機能を利用し、Gitサーバー内のソースコードからコンテナイメージを構築 |
Route | OpenShiftルーターが認識するDNSホスト名を定義し、アプリケーションへの外部アクセスを提供 |
- 注記: KubernetesのReplication Controllerは、通常OpenShiftのDeployment Controllerによって作成されます。
- ローリングアップデートは、システムやアプリケーションの更新方法の一つで、稼働中のサービスを停止することなく段階的に新しいバージョンへ移行する手法です。主にコンテナ環境やクラウド環境で使用されます。

Service と Route の違い
OpenShiftやKubernetes環境において、ServiceとRouteはどちらもアプリケーションのネットワーク通信を管理する重要なリソースですが、その目的と役割が異なります。
1. Service
Serviceは、内部通信の管理に特化したリソースです。
2. Route
Routeは、外部通信の管理に特化したリソースです。
比較表
項目 | Service | Route |
目的 | クラスタ内部通信を管理 | クラスタ外部からの通信を管理 |
トラフィック元 | クラスタ内のリソース | クラスタ外部(例: インターネット) |
トラフィック先 | Pod | Service(間接的にPodに到達) |
エンドポイント | 固定IPまたは名前 | DNSホスト名(例: app.example.com ) |
セキュリティ | 通常、クラスタ内通信で暗号化なし | TLS証明書を使用したHTTPS通信が可能 |
まとめ
- Serviceは主に内部通信を担当し、Podへのルーティングや負荷分散を行います。
- Routeは外部通信を担当し、クラスタ外部からのリクエストを適切なServiceにルーティングします。
両者を組み合わせることで、効率的で安全な通信が可能になります。
ポイントまとめ
- OpenShiftは、KubernetesとDockerのインフラを基盤として機能を拡張し、開発者や管理者の作業を効率化します。
- 高レベルなリソース管理により、継続的インテグレーション・デリバリー(CI/CD)の実現を支援します。
- 開発環境に適したツールやサービスを統合して提供します。
ネットワーキング:Docker、Kubernetes、OpenShiftの概要
Dockerのネットワーキング
- コンテナのIPアドレス
- Dockerが管理するコンテナには、内部ネットワークからIPアドレスが割り当てられ、ホスト内部からのみアクセス可能。
- コンテナの特性上、IPアドレスは動的であり、頻繁に割り当てや解放が行われる。
- 外部アクセス
- 外部からアクセスするには、ルーターからホスト、さらにコンテナのIPアドレスへのポートフォワーディングが必要。
- 通常の状態
- Dockerコンテナは、内部ネットワーク(ホスト内)に隔離されており、直接外部からアクセスできない。
- コンテナの内部IPアドレスはプライベートなもので、外部のデバイスから見えない。
- 外部アクセスを可能にする方法:ポートフォワーディング
- 外部からのアクセスを許可するためには、次のようなポートフォワーディングを設定する必要があります:
- ルーターで特定のポート(例:
8080
)をホストマシンのIPアドレスに転送。 - ホストマシンでそのポートをDockerコンテナの内部ポート(例:
80
)に転送。 - 状況
- DockerコンテナでWebアプリケーションを実行しており、そのアプリがコンテナ内のポート
80
でリクエストを受け付けているとします。 - ポートフォワーディングの設定
- ホストマシンのポート
8080
を、Dockerコンテナのポート80
にマッピング。 これにより、ホストマシンのhttp://<ホストのIP>:8080
にアクセスすると、コンテナ内のアプリケーションに到達できるようになります。 - ルーターでの設定
- ホストが家庭用や企業用ネットワークの背後にある場合、ルーターでポートフォワーディングを設定し、インターネットからホストのポート
8080
にアクセス可能にします。 - この方法は単一ホストに依存しているため、スケーラビリティに欠けます。 (例えば、大規模なシステムで複数のホストやコンテナを扱う際、管理が煩雑になる)
- KubernetesやOpenShiftでは、このようなポートフォワーディングの代わりに、NodePortやRouteなどの仕組みで外部アクセスを簡単かつスケーラブルに提供します。
- この方法はスケーラビリティが低く、大規模な環境には不向き。
詳細:
この部分は、Dockerコンテナが外部(インターネットや別のネットワーク)から直接アクセスされる方法について説明しています。具体的には以下のような仕組みです:
外部アクセスの詳細
具体例
問題点
Kubernetesのネットワーキング
- ソフトウェア定義ネットワーク(SDN)
- Kubernetesは、複数のノード間で内部コンテナネットワークを作成。
- クラスター内の任意のPodが、ホストを超えて他のPodにアクセス可能。
- 安定した接続先
- コンテナ同士の直接接続は推奨されない。代わりに、サービスIPアドレスを使用することで、スケーラビリティと障害耐性を確保。
- NodePortによる外部アクセス
- KubernetesサービスはNodePort属性を指定可能。これにより、クラスター内のすべてのノードが指定されたネットワークポートをSDNにリダイレクト可能。
- しかし、この方法も大規模な環境では限界がある。
OpenShiftのネットワーキング
- Routeリソースの活用
- OpenShiftは、外部からのアクセスをスケーラブルかつシンプルに実現するためにRouteリソースを提供。
- HTTPやTLSアクセスは、Kubernetes SDN内のサービスアドレスに転送される。
- 必要条件:DNSホスト名をOpenShift Routerノードの外部IPアドレスにマッピング。
- 開発者と管理者のサポート
- OpenShiftはDockerやKubernetesのコア機能を隠すことなく、独自の管理ツール(CLI、Webコンソール)を提供。
- 生のDockerコンテナやKubernetesリソースもクラスターに取り込めるため、OpenShiftの追加機能を活用可能。
- ワークフローの自動化
- OpenShiftの主な付加価値は、開発・デプロイメントの自動化。アプリケーションのビルドとデプロイが標準プロセスとしてOpenShiftクラスター内で完了。
まとめ
1. コンテナのネットワーク(Dockerなど)
- 特徴:
- 各コンテナにはホスト内で有効な内部IPアドレスが割り当てられる。
- 同じホスト内にあるコンテナ同士はネットワークブリッジを通じて通信可能。
- ホストの外に出る場合はポートフォワーディングを利用する必要がある。
- 制限:
- 通信範囲が1台のホスト内に限定される。
- 複数のホスト間で通信する場合は、手動で設定を行うか、Docker SwarmやKubernetesのような追加ツールが必要になる。
2. Kubernetesのネットワーク(クラスタ内のPod間通信)
- 特徴:
- ソフトウェア定義ネットワーク(SDN)を提供し、異なるノード(サーバー)上にあるPod同士が通信できる。
- 各Podに独自のIPアドレスが割り当てられ、そのIPを使用して直接通信可能。
- Service(サービス):
- Kubernetesは安定したサービスIPアドレスを提供し、Podはそのサービス名(DNS名)を通じて通信可能。
- サービスによって負荷分散や可用性向上が実現される。
- 制限:
- Kubernetesネットワークは基本的にクラスタ内通信専用で、外部アクセスはデフォルトでは許可されない。
- 外部アクセスを行うにはNodePortやLoadBalancer、Ingressなどの設定が必要。
3. OpenShiftのネットワーク(外部アクセスの管理)
- 特徴:
- OpenShiftはKubernetesのネットワークをベースに、外部アクセスの簡素化とスケーラビリティ向上を図っている。
- Route(ルート)リソース:
- 外部からのHTTPやHTTPSリクエストを、Kubernetesクラスタ内のサービスにルーティングする。
- KubernetesのNodePortやLoadBalancerを使用する場合と比べて、設定が簡素化される。
- 外部DNS名をOpenShiftルーターの外部IPアドレスにマッピングするだけで利用可能。
- メリット:
- OpenShiftのルートにより、外部からKubernetesのサービスへのアクセスがより簡単かつスケーラブルになる。
- 開発者はネットワーク設定に詳しくなくても、簡単に外部アクセスを設定可能。
要約
ネットワーク層 | 通信範囲 | 主な役割 |
コンテナネットワーク | 単一ホスト内のコンテナ間通信 | ホスト内コンテナの相互接続を提供する。 |
Kubernetesネットワーク | クラスタ内のPod間通信 | クラスタ内Pod間通信と安定したサービスIPの提供。 |
OpenShiftネットワーク | クラスタ外部からサービスへのアクセス制御 | 外部アクセスを簡単かつ効率的に実現する。 |
例
- コンテナネットワーク:
同じホスト内にある2つのコンテナ
A
と B
が内部IPで通信する。例:
curl http://172.17.0.2:8080
- Kubernetesネットワーク:
異なるノード上にあるPod
A
と B
が、ClusterIPやDNS名を使用して通信する。例:
curl http://service-name:8080
- OpenShiftネットワーク:
外部のDNS名(例:
http://myapp.example.com
)を使い、リクエストをルート経由でサービスに転送する。例:
curl <http://myapp.example.com
>OpenShiftとKubernetesの役割
- MasterとNode
- OpenShiftクラスターは、コンテナを実行するノードサーバーと、それを管理するマスターサーバーで構成される。
- サーバーはマスターとノードを兼ねることもできるが、通常は安定性を高めるために役割を分離。
- スケーラブルなアーキテクチャ
- OpenShiftの管理ツール(CLI、Webコンソール)を活用し、開発者は低レベルなDockerの詳細を知らなくても、効率的にアプリケーションを操作可能。
- 必要に応じて、DockerやKubernetes環境と互換性を持たせることも可能。
OpenShiftの概要とアーキテクチャ
1. OpenShiftの構成要素
- マスターとノード
- マスターは認証やAPIのエントリーポイントを提供し、KubernetesのマスターサービスやEtcdデーモンを実行。
- ノードはKubernetesのkubeletとkube-proxyデーモンを実行し、コンテナをポッドにグループ化してアプリケーションを動作させる。
- マスターもノードとして機能する場合がある。
2. Kubernetesとポッド
- ポッドはコンテナのグループで、仮想ネットワークデバイスや内部IPアドレス、TCP/UDPポート、永続ストレージを共有。
- レプリカセットによりポッドのスケールを管理。例えば、ApacheとPHPのポッドを同じイメージで水平スケール可能。
3. OpenShiftのプロジェクト管理
- プロジェクトはKubernetesリソース(ポッド、サービスなど)をグループ化し、ユーザーごとにアクセス権やリソースのクオータを設定可能。
- OpenShiftでは「アプリケーション」という概念は存在せず、
new-app
コマンドでリソースをプロジェクト内に作成。リソースはラベル(例: app)で分類。 - アプリケーションのコアとなる部分で、プロジェクト内に配置されます。
- アプリケーションのバージョンアップやスケーリングを管理するためのリソース。
- アプリケーションのポッドへのアクセスを管理するために使用され、内部や外部との通信を制御します。
- アプリケーションの設定やAPIキー、パスワードなど、機密性の高い情報もプロジェクト内で管理されます。
- データの永続化を必要とする場合、ストレージリソースも同じプロジェクト内で管理されます。
- アプリケーションにアクセスするユーザーやサービスアカウントのアクセス権限を管理します。
- プロジェクトに割り当てられるリソース(CPU、メモリ、ストレージなど)の上限を設定することができます。
- アプリケーション内や外部との通信を制限するための設定を行います。
- 一貫した管理: アプリケーションに関連する全てのリソースが一つのプロジェクトに含まれることで、デプロイや更新、アクセス制御が一元化され、管理が容易になります。
- セキュリティ: 同じプロジェクト内でリソースを分けることで、アクセス制御やセキュリティ設定が適用しやすくなります。
- スケーラビリティ: アプリケーションに関連するリソース全体を一度にスケールアウト/インすることができます。
詳細:
一つのアプリケーションに関連する全てのリソースが一つのプロジェクト内に含まれることが推奨されます。これにより、アプリケーションの全てのリソース(ポッド、サービス、ストレージなど)を一元的に管理しやすくなります。
具体的には、以下のようなリソースが一つのプロジェクト内に含まれます:
1. アプリケーションのポッド(実行中のコンテナ)
2. デプロイメント(アプリケーションの更新管理)
3. サービス(通信インターフェース)
4. ConfigMapおよびシークレット(設定情報や機密情報)
5. 永続ストレージリソース(PersistentVolume、PersistentVolumeClaim)
6. ロールとロールバインディング(アクセス権限)
7. リソースクオータ(リソース制限)
8. ネットワークポリシー(通信制御)
利点
例外
ただし、大規模なシステムやマイクロサービスアーキテクチャの場合は、複数のプロジェクトを使ってリソースを分けることもあります。例えば、バックエンドとフロントエンドのリソースを別々のプロジェクトに配置し、必要に応じて相互に通信させる場合です。この場合でも、各サービスは独立したプロジェクトとして管理され、適切な通信やアクセス制御が必要です。
まとめ
基本的には、一つのアプリケーションに関連する全てのリソースは一つのプロジェクトにまとめることが推奨されますが、システム規模やアーキテクチャに応じてプロジェクトの分割が必要になる場合もあります。
4. Source-to-Image(S2I)
- S2Iプロセス: SCM(ソースコード管理)からコードを取得し、ランタイムを自動検出。ベースイメージでアプリケーションを構築後、新しいイメージを生成し内部レジストリにプッシュ。
- Jenkinsなどの外部CIツールを統合可能。カスタムのパイプラインやテンプレートを作成可能。
5. OpenShiftリソースの管理
- リソース(イメージ、コンテナ、ポッドなど)はEtcdに保存され、CLI、Webコンソール、REST APIで管理可能。
- リクエスト: クライアントがHTTPメソッド(GET, POST, PUT, DELETEなど)でサーバーにリクエストを送信。
- 処理: サーバーはリクエストに応じてリソース(データ)を操作。
- レスポンス: サーバーは結果をHTTPレスポンスとして返す。レスポンスにはステータスコードやデータが含まれる。
- 無状態性: 各リクエストは独立しており、サーバーはリクエスト間で状態を保持しません。
- リソース駆動: URLは操作対象のリソースを表し、HTTPメソッドでリソースに対する操作を行います。
詳細
REST APIは、HTTPプロトコルを使ったリクエストとレスポンスの仕組みですが、単に「情報が来たらレスポンスする」だけではありません。以下のような特徴があります:
特徴
要するに、REST APIは「来た情報に応じてレスポンスする」以上に、リソース操作の規則に従って動作します。
- JSONまたはYAML形式で共有可能で、SCMシステムから直接取得することも可能。
6. OpenShiftの操作モデル
- OpenShiftの操作は主に宣言的。例えば、新しいポッドリソースを作成すると、Kubernetesがスケジューリングしノードで実行。
- 宣言的操作: ユーザーは、リソースの最終的な状態を宣言します。例えば、「新しいポッドを作成する」という操作を宣言します。このとき、ポッドがどのように動作するか、必要なリソースや設定(例えばCPUやメモリの要件)を指定します。
- Kubernetesのスケジューリング: 宣言されたリソースを基に、Kubernetesがどのノード(サーバ)でそのポッドを実行するかを自動的に決定します。このプロセスはユーザーが明示的に指定することなく行われます。
- システムの自己修復: 一度設定したリソースが変更された場合、Kubernetesは自動的にその状態を最初に宣言された状態に戻そうとします(例えば、ポッドが予期しない理由で停止した場合、再起動を試みます)。
詳細
OpenShiftの操作が「宣言的」というのは、システムが最終的にどうあるべきかを指定(宣言)するアプローチであり、その結果、システムが自動的に適切な状態に遷移することを意味します。
具体的には、以下のような流れです:
このように、OpenShiftでは「目標状態」を定義することで、システムがその状態を保つように管理されるため、ユーザーはシステムの運用を細かく指定することなく、望ましい結果が得られます。
7. OpenShiftネットワーキング
- Kubernetesのサービスとルートを利用して、ポッド間や外部クライアントとの通信を管理。
- サービスはポッド間のロードバランシングを提供し、ルートは固定DNS名を提供。OpenShiftはOpen vSwitchを使用したSDNやHAProxyによるルーティングを提供。
8. 永続ストレージ
- ポッドが別ノードに移動してもデータを保持するため、KubernetesのPersistentVolume(PV)とPersistentVolumeClaim(PVC)を利用。
- OpenShiftではiSCSI、Fibre Channel、GlusterFS、クラウドブロックストレージ(例: OpenStack Cinder)などをサポート。ストレージクラスで異なるバックエンドストレージを動的にプロビジョニング可能。
9. 高可用性(HA)
- OpenShiftはマスターのHA機能を提供。
- アプリケーションのHAは、ポッドやノードが失われた場合に自動的に再スケジューリングされる仕組みを備える。
10. イメージストリーム
- イメージストリームは関連するコンテナイメージの仮想ビューを提供。タグ(istag)を使用してイメージの履歴管理やロールバックが可能。
- 新しいイメージが追加されると、自動的にビルドやデプロイがトリガーされる。
参考資料
詳細は公式ドキュメントをご参照:
質問 1
以下のうち、Kubernetesアーキテクチャに関して正しいものはどれですか?(3つ選んでください)
(A) Kubernetesノードは、マスターなしで管理できます。
(B) Kubernetesマスターは、Podのスケーリングを管理します。
(C) Kubernetesマスターは、Podを特定のノードにスケジュールします。
(D) Podは、Kubernetesによって単一のユニットとして管理されるコンテナのセットです。
(E) Kubernetesツールは、OpenShiftクラスターのリソースを管理するためには使用できません。
解説
Kubernetesのアーキテクチャには、マスターとノードが含まれており、マスターは管理とスケジューリングを行い、ノードはコンテナを実行します。
(A) Kubernetesノードは、マスターなしで管理できます:誤り。Kubernetesはマスターとノードの関係に依存しており、マスターがなければ、ノードの管理は行えません。
(B) Kubernetesマスターは、Podのスケーリングを管理します:正しい。マスターはPodのスケーリングを管理します。
(C) Kubernetesマスターは、Podを特定のノードにスケジュールします:正しい。マスターは、Podを実行するための適切なノードをスケジュールします。
(D) Podは、Kubernetesによって単一のユニットとして管理されるコンテナのセットです:正しい。Podは1つ以上のコンテナをまとめて管理する最小単位です。
(E) Kubernetesツールは、OpenShiftクラスターのリソースを管理するためには使用できません:誤り。Kubernetesツールは、OpenShiftクラスターでもリソース管理に使用できます。
正解:B、C、D
質問 2
以下のうち、KubernetesおよびOpenShiftのリソースタイプに関して正しいものはどれですか?(2つ選んでください)
(A) Podは自分自身の永続ストレージのプロビジョニングを担当します。
(B) 同じレプリケーションコントローラーから生成されたすべてのPodは、同じノードで実行する必要があります。
(C) ルートは、Podへの外部アクセスのためにIPアドレスを提供する役割を担います。
(D) レプリケーションコントローラーは、特定のアプリケーションのPod数を監視および維持する責任を持っています。
(E) Kubernetes Podから作成されたコンテナは、標準的なDockerツールを使用して管理することはできません。
解説
KubernetesとOpenShiftには、リソースタイプとして多くの管理コンポーネントが存在します。これらはアプリケーションのデプロイメントやスケーリングを効率化するために使用されます。
(A) Podは自分自身の永続ストレージのプロビジョニングを担当します:誤り。Podは永続ストレージを自分でプロビジョニングすることはありません。永続ストレージはPersistentVolume (PV) やPersistentVolumeClaim (PVC) によって管理されます。
(B) 同じレプリケーションコントローラーから生成されたすべてのPodは、同じノードで実行する必要があります:誤り。レプリケーションコントローラーはPodを管理しますが、Podは異なるノードに分散して実行されることもあります。
(C) ルートは、外部からPodへのアクセスのためにIPアドレスを提供する役割を担います:。ルートはDNS名を提供して、外部からPodにアクセスできるようにします。IPアドレスの提供はサービスが行います。
(D) レプリケーションコントローラーは、特定のアプリケーションのPod数を監視および維持する責任を持っています:正しい。レプリケーションコントローラーは指定された数のPodを維持し、必要に応じてスケーリングを行います。
(E) Kubernetes Podから作成されたコンテナは、標準的なDockerツールを使用して管理することはできません:誤り。KubernetesのPodに含まれるコンテナは、標準的なDockerツールを使って管理できます。
正解:C、D
質問 3
KubernetesおよびOpenShiftのネットワーキングに関して、正しいものはどれですか?(2つ選んでください)
(A) Kubernetesサービスは、PodのセットにアクセスするためのIPアドレスを提供できます。
(B) Kubernetesは、各コンテナに対して内部IPアドレスを提供する役割を担います。
(C) Kubernetesは、Podに完全修飾ドメイン名(FQDN)を提供する責任を担います。
(D) レプリケーションコントローラーは、外部リクエストをPodにルーティングする責任を持っています。
(E) ルートは、外部アクセスのためのDNS名を提供する役割を担います。
解説
(A) Kubernetesサービスは、PodのセットにアクセスするためのIPアドレスを提供できます。
正しいです。Kubernetesサービスは、Podのセットに単一のIPアドレスを割り当て、ロードバランシングやネットワーク通信を提供します。Kubernetesで「Podのセット」とは、複数のPodをまとめて管理する単位のことを指します。この「セット」は通常、サービス (Service) やレプリカセット (ReplicaSet) によって作られます。
(B) Kubernetesは、各コンテナに対して内部IPアドレスを提供する役割を担います。
正しくありません。Kubernetesは各PodにIPアドレスを提供しますが、コンテナごとではなくPod単位です。
(C) Kubernetesは、Podに完全修飾ドメイン名(FQDN)を提供する責任を担います。
正しくありません。PodにはFQDNを提供される場合もありますが、必須ではなく、内部DNS解決の範囲にとどまります。
(D) レプリケーションコントローラーは、外部リクエストをPodにルーティングする責任を持っています。
正しくありません。レプリケーションコントローラーの主な役割は、Pod数の管理とスケーリングであり、ネットワークリクエストのルーティングは役割外です。
(E) ルートは、外部アクセスのためのDNS名を提供する役割を担います。
正しいです。OpenShiftのルートは、外部クライアントがPodにアクセスできるようにDNS名を提供します。
正解:A、E
質問4
OpenShiftおよびKubernetesにおける永続ストレージに関して、正しい説明はどれですか?
(1つ選んでください)
(A) PVCは、ポッドがデータを保存するために使用できるストレージ領域を表し、アプリケーション開発者によってプロビジョニングされます。
(B) PVCは、ポッドがデータを保存するために要求できるストレージ領域を表し、クラスター管理者によってプロビジョニングされます。
(C) PVCは、ノードで割り当てられるメモリの量を表し、開発者がアプリケーションに必要なメモリ量を指定できます。
(D) PVCは、ノードで割り当てられるCPUの処理単位の数を表し、クラスター管理者によって制限されます。
解説
PVC(Persistent Volume Claim)は、ポッドがストレージを要求するリソースであり、その要求に応じてクラスター管理者がストレージをプロビジョニングします。管理者が用意したPersistent Volume(PV)をPVCが要求し、リソースとして割り当てられます。
メモリやCPUの割り当ては、PVCではなく、リソースリクエストやリソース制限で設定します。
正解
(B) PVCは、ポッドがデータを保存するために要求するストレージ領域を表し、クラスター管理者によってプロビジョニングされます。
質問5
OpenShiftがKubernetesに追加する機能に関して、正しい説明はどれですか?
(1つ選んでください)
(A) OpenShiftは、Kubernetesを実際の使用に必要な機能を追加します。
(B) OpenShift用に作成されたコンテナイメージは、通常のKubernetesでは使用できず、Docker単体でも使用できません。
(C) Red Hatは、OCP製品に内部的にDockerとKubernetesのフォーク版を維持しています。
(D) OCPでの継続的インテグレーション(CI)および継続的デプロイメント(CD)には外部ツールが必要です。
解説
OpenShiftはKubernetesをベースにしたプラットフォームであり、Kubernetesに対していくつかの追加機能を提供します。これには、開発者が使用するためのツールや、運用上の利便性を高めるための機能が含まれています。OpenShiftは、CI/CDツールや統合された開発環境を提供するなど、実際の運用に必要な追加機能を加えていますが、Kubernetes自体と完全に異なるものではありません。
正解は(A)です。OpenShiftはKubernetesの上に実際の使用を支える機能を追加しています。
正解
(A) OpenShiftは、Kubernetesを実際の使用に必要な機能を追加します。
質問6
イメージストリームに関して正しい説明はどれですか?
(2つ選んでください)
(A) イメージストリームは、タグで識別される任意の数のコンテナイメージで構成されます。
(B) OpenShiftは、デフォルトのイメージストリームを提供していません。
(C) ビルダーイメージが変更されても、デプロイ済みのPodを更新する必要はありません。
(D) イメージはイメージストリームを監視し、新しいイメージが追加された際に通知を受け取ります。
(E) アプリケーションはイメージストリームを基に構築されます。
解説
OpenShiftのイメージストリームは、アプリケーションのビルドやデプロイに関連するイメージのバージョン管理を提供します。
(A) イメージストリームは、タグで識別される複数のコンテナイメージを管理する仕組みで、イメージを効率的に扱うために使用されます。
(E) アプリケーションはイメージストリームを基に構築されるため、イメージストリームを利用することで、ビルドプロセスを効率化できます。
一方、(B) は誤りで、OpenShiftはデフォルトのイメージストリームを提供しています。(C) も誤りで、ビルダーイメージが変更された場合、デプロイ済みのPodを更新する必要があります。(D) は、監視する動作が正しい場合もありますが、この問題文では正解として意図されていません。
正解
(A) イメージストリームは、タグで識別される任意の数のコンテナイメージで構成されます。(E) アプリケーションはイメージストリームを基に構築されます。
質問7
OpenShift High Availability に関して正しい記述はどれですか?(2つ選んでください)
(A) OpenShift Container Platform HA は、OpenShift インフラ自体と、OpenShift クラスタ内で実行されているアプリケーションの HA を提供します。
(B) マスターノードは、HA をサポートするためにプラグインを必要とします。
(C) ビルダーイメージが変更されても、デプロイされた Pod を更新する必要はありません。
(D) OpenShift は、マスターに対してデフォルトで完全にサポートされたネイティブ HA メカニズムを提供します。
(E) OpenShift ネットワーキングは、Pod の状態を管理する責任があります。
解説
(A) 正しい
OpenShift Container Platform は、高可用性を実現するための機能を提供します。この機能には、OpenShift 自体のインフラ(例: マスターや etcd)と、アプリケーションの HA の両方が含まれます。
(B) 誤り
マスターノードは、特別なプラグインを使用せずに HA をサポートします。
(C) 誤り
ビルダーイメージが変更されると、Pod の再デプロイが必要になる場合があります。
(D) 正しい
OpenShift は、マスターに対してデフォルトで完全にサポートされた HA 機能を提供します。これにより、クラスター管理の信頼性が向上します。
(E) 誤り
ネットワーキングは Pod の状態を管理する役割を持ちません。Pod の状態はコントローラーやスケジューラーが管理します。
正解: A, D
この章では、以下の内容を学びました:
- コンテナは非常に少ないオーバーヘッドで作成される、分離されたアプリケーション実行環境である。
- コンテナイメージは、アプリケーションとそのすべての依存関係をパッケージ化し、異なる環境でアプリケーションを実行しやすくする。
- Dockerは、標準のLinuxカーネルの機能を使用してコンテナを作成する。
- コンテナイメージレジストリは、コンテナイメージを複数のユーザーやホストに配布するための推奨メカニズムである。
- OpenShiftは、Kubernetesを使用して複数のコンテナで構成されたアプリケーションをオーケストレーションする。
- Kubernetesは、コンテナ化されたアプリケーションに対して、負荷分散、高可用性、永続ストレージを管理する。
- OpenShiftは、Kubernetesにマルチテナンシー、セキュリティ、使いやすさ、継続的インテグレーションと継続的デリバリーの機能を追加する。
- OpenShiftのルートは、コンテナ化されたアプリケーションを外部のユーザーに管理可能な方法で公開するための重要な要素である。
- 作者:みなみ
- 链接:https://www.minami.ac.cn//%E8%B3%87%E6%A0%BC%E5%8B%89%E5%BC%B7/13fd7ae8-88e2-8011-8462-c9613d717a75
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章