Containerization and Orchestration(コンテナ化とオーケストレーション)

article technology medium #containers#oci#docker#podman#kubernetes#containerd#cri-o#runc#gvisor#kata#firecracker#cilium#calico#istio#linkerd#helm#argocd#flux#kserve#kubeflow#gpu-operator#mig#supply-chain-security#sigstore#sbom#slsa#falco#kyverno#opa-gatekeeper#gitops#service-mesh#wasm#edge
Created: 2026-05-27 Updated:

OCI / runc / containerd / gVisor / Kata, K8s 抽象, CNI / CSI, ArgoCD / Flux, Sigstore / SLSA / SBOM, Istio Ambient, GPU Operator + MIG + KServe を俯瞰。

Containerization and Orchestration(コンテナ化とオーケストレーション)

コンテナは OCI Image/Runtime/Distribution Spec 標準化の移植可能な実行単位、オーケストレーションは Kubernetes が事実上の宣言的コントロールプレーン。本記事は runc/containerd/gVisor/Kata、K8s 抽象、CNI/CSI、ArgoCD/Flux、Sigstore/SLSA/SBOM、Istio Ambient、GPU Operator+MIG+KServe+KubeRay+vLLM、WASM・エッジ・アンチパターンを俯瞰。バージョンと GA は訓練データ (~2025-08) 依存で 要確認 (2026-05)confidence: medium。LLM 推論詳細は tech-46/tech-64

OCI 標準

OCI (Linux Foundation, 2015) は 3 仕様: Image Spec (レイヤ・マニフェスト・gzip/zstd)、Runtime Spec (config.json、runc 基底)、Distribution Spec (Docker Registry V2 由来 HTTP API)。各 v1.1 系 (要確認)。OCI Artifacts はマニフェスト形式を汎用バイナリ配布に拡張、Helm Chart/OPA Bundle/WASM/Cosign 署名/SBOM を同一レジストリ配布。Image Spec 1.1 の referrers API が署名↔対象の参照グラフを表現、クライアントは ORAS CLI、GHCR/ECR/GCR 対応。

コンテナランタイム

低レベル (cgroup+namespace): runc (Go、リファレンス実装)、youki (Rust、エッジ)。高レベル (CRI): containerd (CNCF graduated、CRI プラグイン v1.7+ 内蔵)、CRI-O (CRI 専用最小実装、OpenShift デフォルト)。サンドボックス: gVisor (Google、ユーザー空間 Sentry、~10–30% 低下要確認)、Kata (QEMU/Firecracker 軽量 VM 強分離、RuntimeClass)、Firecracker (AWS、Rust KVM microVM、起動 100ms 以下、Lambda/Fargate バックエンド)。選択: 本番=containerd+runc、untrusted=runsc、ハード分離=Kata、高密度=Firecracker。

イメージビルドツールチェーン

Docker はデーモン+CLI で最普及、23.0+ で BuildKit デフォルト (要確認)。Podman (Red Hat) はデーモンレス・ルートレスファースト、Docker CLI 互換。Buildah は Dockerfile→OCI 直接生成、Podman のビルドバックエンド。BuildKit は並列+キャッシュリモート共有 (--cache-from/to)、マルチプラットフォーム (--platform linux/amd64,arm64)、フロントエンド差し替え。nerdctl は containerd 向け Docker 互換 CLI。マルチステージ で builder と実行を分離、ベースに distroless/Chainguard Wolfi (musl libc undistro、CVE 修正高速) で attack surface 最小化。

Kubernetes アーキテクチャとワークロード抽象

コントロールプレーン: kube-apiserveretcd (Raft KV)、kube-schedulercontroller-managercloud-controller-manager。ノード: kubelet (Pod→CRI)、kube-proxy (iptables/ipvs/eBPF)、CNI。ワークロード: Pod 最小単位、Deployment ステートレス、StatefulSet 安定 ID+PVC、DaemonSet 全ノード、Job/CronJob バッチ、HPA/VPA スケール、PDB で最小稼働保証。Sidecar (KEP-753)initContainers[].restartPolicy: Always で定義、Job 完了時のサイドカー残存問題を解決、1.29 Beta→1.32 GA 推定 (要確認)。AppArmor GA 1.31、RWOP GA 1.29、PSA GA 1.25 推定。

CNI とネットワーキング

CNI は CNCF 仕様、kubelet が Pod 起動時に呼出。Flannel (VXLAN、ポリシー未対応)、Calico (iptables/eBPF+BGP、大規模)、Cilium (eBPF、L7 可視性、KubeProxyReplacement で kube-proxy 完全置換、Hubble が L3–L7 フローログ)、Antrea (VMware、OVS/eBPF、NSX-T)。Service: ClusterIP/NodePort/LoadBalancer/ExternalName。Gateway API (v1.x GA 要確認) が Ingress 後継で GatewayClass/Gateway/HTTPRoute/GRPC/TCP/TLSRoute の role-based モデル。Cilium ≥1.16 は Ambient 連携・LB-IPAM・BGP CP 成熟。

CSI とストレージ抽象

CSI は CNCF 仕様。ダイナミックプロビジョニング は PVC→StorageClass→PV 自動生成。StatefulSetvolumeClaimTemplates で Pod ごと固有 PVC、再スケジュール時も同 PV 再バインドで安定 ID 保証。モード RWO/ROX/RWX/RWOP (1.29 GA、単一 Pod 専有フェンシング、要確認)。主要: AWS ebs-csi/efs-csi、GCP gce-pd-csi/gcs-fuse-csi、Azure azuredisk/azurefile、Rook/Ceph、Longhorn、OpenEBS。VolumeSnapshot・Volume Expansion も CSI 標準。

K8s 以外のオーケストレータと軽量ディストロ

Docker Swarm は単純だが採用減。Nomad (HashiCorp) はコンテナ/VM/raw exec/Java/WASM 統一スケジューラ、Consul/Vault 統合容易、2023 に BSL 移行で OSS 利用制限 (要確認)。AWS ECS は EC2+Fargate (Firecracker microVM サーバーレス)。軽量 K8s: K3s (単一バイナリ <100MB、ARM/エッジ)、k0s (ゼロ依存、Air-gapped)、MicroK8s (snap)、RKE2 (FIPS 140-2)。Talos Linux は K8s 専用不変 OS、/etc 読取専用、SSH なし設定 API のみ、ノードドリフトを構造排除。

GitOps とデリバリ

ArgoCD (CNCF graduated) は Git をソース・オブ・トゥルースとした pull-based GitOps、Application CRD、App of Apps と ApplicationSet、UI+RBAC+SSO。Flux (CNCF graduated) は GitOps Toolkit、Helm/Kustomize/OCI Artifact 対応、ImageUpdateAutomation でタグ自動更新。Helm v3.8+ は OCI レジストリ push/pull oci://... GA、GHCR/ECR が Chart 配布の標準。Kustomize は kubectl 組込のオーバーレイ方式、Base+Overlays (dev/staging/prod)、helmCharts で Helm 合成可。両ツールは Webhook と Sigstore 検証を取り込み中。

サプライチェーンセキュリティ

Rootless はホスト root なし実行 (Podman デフォルト)。Cosign (Sigstore) は Fulcio 短命 CA+Rekor 透明性ログで OIDC ID と署名を紐付けキーレス署名、OCI Artifact 保存。Notary v2 は OCI Referrers ベースの CNCF 署名。SBOM: Syft/Trivy/Grype (SPDX/CycloneDX)。SLSA v1.0 Build Track L1–L3、GHA OIDC+Sigstore で L3 相当達成可 (要確認)。Falco (CNCF) は eBPF/kmod で syscall 監視。Admission: OPA Gatekeeper (Rego)/Kyverno (YAML、K8s ネイティブ)。Pod Security: PSS+PSA (1.25 GA)、seccomp RuntimeDefault 1.27、AppArmor 1.31 GA。

サービスメッシュ

Istio (CNCF graduated 2023) は Envoy サイドカー、Ambient Mesh はサイドカーレス: ztunnel (Rust) がノード単位 L4 (mTLS+L4 ポリシー)、Waypoint (Envoy) が ns/サービス単位 L7 を選択的適用。Istio 1.21–1.22 GA 推定 (要確認)。Linkerd (CNCF graduated) は Rust linkerd2-proxy、軽量低レイテンシ。Cilium Service Mesh (≥1.12) は eBPF+必要時 Envoy、Ingress/Gateway API/L7 ポリシー。サイドカー型は Pod ごと Envoy で CPU/メモリ追加だが L7 局所化でデバッグ容易、サイドカーレスは運用負荷低だが新しい。

可観測性

OTel Operator が Collector と自動インスツルを管理、Collector は DaemonSet/Deployment/Sidecar の 3 モード、gen_ai.* semantic conventions (tech-64) で LLM テレメトリ標準化進行中 (要確認)。Prometheus Operator/kube-prometheus-stackServiceMonitor/PodMonitor CRD で宣言的、Alertmanager+Grafana+node-exporter+kube-state-metrics を一括展開。ログ: Loki/Fluent Bit/Vector。Grafana: Alloy/Tempo/Mimir

GPU と AI ワークロード

NVIDIA GPU Operator が Driver/CUDA/Device Plugin/DCGM/MIG Manager を自動展開、RuntimeClass (nvidia) 登録、nvidia.com/gpu: 1 で割当。MIG は A100/H100 ハードウェア分割 (最大 7)、nvidia.com/mig-1g.10gb: 1、テナント分離強。Time-Slicing は MIG 非対応共有でスイッチオーバーヘッド、MPS は複数プロセス効率共有。スタック: KubeFlow (Pipelines+Notebooks+Training Operator+KServe)、KServe (InferenceService CRD、Triton/TorchServe、Knative Serverless と RawDeployment)、KubeRay (RayCluster/RayJob/RayService、vLLM 分散推論)、vLLM on K8s (--tensor-parallel-size、TP=8 は NVLink イントラノード厳守、tech-48)、NVIDIA NIM (NGC 配布の最適化済推論マイクロサービス)。運用詳細 tech-46/tech-64

エッジと WASM ランタイム

エッジ K8s: K3s/k0s/MicroK8s に加え KubeEdge (CNCF、edge↔cloud メッセージバス) と OpenYurt (Alibaba、edge autonomy) がノード断絶耐性を提供。WASM on K8s: WasmEdge (CNCF、containerd shimv2)、runwasi (wasmer/wasmtime/WasmEdge バックエンド)、crun-wasm (crun が WASM 直接実行)、Spin (Fermyon、サーバーレス WASM)。用途は IoT/エッジ軽量、プラグインサンドボックス、コールドスタート秒未満のサーバーレス。コンテナで過大なワークロードを WASM で薄く動かす二層構成が増加 (要確認)。

アンチパターン

(1) Deployment でステートフル: StatefulSet を使用。(2) latest タグ: 固定 SHA ダイジェスト (image@sha256:...) 必須。(3) root 実行: runAsNonRoot: true で権限昇格抑制。(4) 過大イメージ: distroless/scratch+マルチステージ。(5) resources 未設定: QoS が BestEffort 化し eviction 最優先犠牲。(6) シングルレプリカ: 最低 2+PDB 必須。(7) リフト&シフト: 12-Factor App 準拠なしではスケールせず。(8) 1 コンテナ複数プロセス: tini か Pod 複数コンテナへ分離。(9) ヘルスチェック欠如: readiness/liveness/startup Probe で未準備 Pod へのトラフィック流入を防ぐ。(10) Secret 平文: External Secrets/Vault Agent/Sealed Secrets を使用。

未確認事項と注意点

訓練データ (~2025-08) 依存のため 要確認 (2026-05): OCI Spec v1.1、K8s 1.29–1.32 GA/Beta、Sidecar (KEP-753) GA、containerd v2.0、Cilium v1.16+ Ambient、Istio Ambient GA (1.21–1.22 推定)、Gateway API v1.x、RWOP/AppArmor/seccomp/PSA バージョン、GPU Operator、Helm v3.16、ArgoCD v2.13/v3.x、Flux v2.4、Cosign v2、Falco v0.39、KServe v0.13、KubeFlow v1.9、KubeRay v1.2、vLLM 公式 Helm、NIM、Firecracker v1.7 と Lambda/Fargate 詳細、Nomad BSL 1.1、Talos v1.7、Alloy v1.x、SLSA v1.0 Track 1。公開後に /web-research-from-main で確認推奨。

See also

Local graph