SA.05:仮想マシンとコンテナの設計

SA.05.1 仮想マシンの設計と管理

重要度:☆☆☆(3)

概要

  • 仮想化の基本技術を理解し、性能検討やトラブルシューティングができる。
  • 仮想マシン及び仮想ディスクの移行など、仮想環境の管理ができる。

詳細

  • 仮想マシンの動作や性能に関わる要素を理解している。
    • オーバーコミット
    • NUMA
  • 仮想マシンのリソース割り当てに関する手法のメリット、デメリット、制約を理解し、有効利用する。
    • pinning (ピニング)
    • スケジューリング、レイテンシ設定、優先順位設定
  • 仮想化支援技術や仮想デバイスについて理解し、性能検討やトラブルシューティングに役立てる。
    • x86 アーキテクチャによる仮想化支援技術 (Intel VT-x、AMD-V) を利用する Linux の機能
    • x86 アーキテクチャにおける OS レベルのプロセス保護機能 (リングプロテクション)
    • virtio の動作方法及び利点欠点
    • 仮想ディスクの主要な形式 (QCOW2、RAW) の特徴
  • 目的に合わせて既存資産を移行する。
    • 物理環境から仮想環境への移行: virt-p2v
    • 仮想環境間の移行: virt-v2v
    • 仮想ディスクのサイズ変更

SA.05.2 コンテナの設計とビルド

重要度:☆☆☆(3)

概要

  • コンテナに対する詳細な設定 (連携情報、リソース割り当てなど) の仕組みと方法を理解している。
  • コンテナイメージの構造について理解し、適切にビルド、更新、管理できる。
  • コンテナの用途に応じて適切なボリュームを使用できる。

詳細

  • コンテナのリソース割り当てや権限設定の仕組みを理解している。
    • 設定対象: CPU、メモリ、I/O、プロセス ID
    • これを実現する Linux カーネルの機能
  • コンテナイメージの構造について理解している。
    • イメージレイヤ、コンテナレイヤ
    • 複数コンテナにおけるイメージの共有
    • イメージとホストのファイルシステムとの関係
  • サイズやセキュリティが考慮されたコンテナイメージをビルドする。また、これらを実現する Dockerfile の記載方法を理解している。
    • 必要十分な親イメージの選択: scratch、distroless
    • 構成物 (apt/yum/dnf パッケージなど) のバージョン指定
    • 不要ファイルの除外: ダウンロードキャッシュのクリア、マルチステージビルドなど
  • コンテナに対して外部ボリュームをマウントし、目的に合わせて複数コンテナ間やホスト間でのデータを共有・永続化する。
    • bind mount
    • tmpfs
  • Docker における詳細なコンテナ操作を理解している。
    • 起動時の環境変数割り当て
    • 複数コンテナの一括管理: docker compose

SA.05.3 コンテナオーケストレーション

重要度:☆☆☆(3)

概要

  • コンテナオーケストレーションの基本動作を理解し、コンテナベースのシステム構成を計画できる。

詳細

  • オーケストレーションエンジンによるコンテナ制御の基本動作とそのユースケースを理解している。
    • 宣言的 API、突き合わせループ
    • 障害時の再スケジューリング
    • オートスケール
  • オーケストレーションエンジンと各種リソースを結びつけるインターフェースの構成を理解している。
    • CRI、CNI、CSI
  • Kubernetes の動作と管理に関わる構成要素の概要を知っている。
    • Pod、および Pod を管理するワークロードリソース: Service、Deployment、StatefulSet
    • コントロールプレーン: kube-apiserver、kube-scheduler、etcd
    • データプレーン (ノード): kubelet、kube-proxy
    • コマンド: kubectl、kubeadm
  • サービスメッシュに関わる主要な OSS について、基本動作やオーケストレーションエンジンとの連携の概要を理解している。
    • Envoy
    • Istio