🔍 ヘルスチェックの方式
| 種類 | 説明 |
|---|
httpGet | 指定したHTTPエンドポイントにGETリクエストを送り、ステータスコードで判定(200〜399なら成功) |
exec | Pod内でコマンド(例:ps aux や curl)を実行し、終了コード0なら成功 |
✅ httpGet のメリット・デメリット
- アプリケーションのWebサービス状態を直接チェックできる(例:
/healthz)
- ネットワークレイヤー含めた動作確認が可能
| ❌ デメリット |
- Webサーバーを持たないアプリ(バッチなど)では使えない
- エンドポイント実装が必要(FlaskやFastAPIなどで
/health を用意する必要あり)
✅ exec のメリット・デメリット
- プロセスが存在するか、ポートがLISTENしているかなど、柔軟な確認が可能
- バッチ処理やCLIベースのアプリケーションにも適用できる
| ❌ デメリット |
- 高頻度に
exec するとCPU/ディスク負荷が高くなる
- 起動時間が長くなると遅延しやすい
- シェル内コマンドの可搬性(AlpineとDebianで違うなど)に注意が必要
マニフェストで定義する主要な事柄を目的別に分類して列挙します。
🧱 1. 基本構造・識別情報
| 項目 | 説明 | 目的 |
|---|
apiVersion | 使用するKubernetes APIのバージョン | 対象のK8sリソース仕様を指定 |
kind | リソースの種類(Pod, Deployment, Serviceなど) | 作成するリソースの種別を定義 |
metadata.name | リソース名(一意) | リソースを識別するため |
metadata.labels | 任意のタグ | リソース分類やセレクタの紐付けに使用 |
🛠 2. Pod仕様関連(spec: セクション内)
🧩 コンテナの定義
| 項目 | 説明 | 目的 |
|---|
containers.name | コンテナの名前 | Pod内で識別するため |
containers.image | 使用するDockerイメージ | 実行するアプリケーションの指定 |
command, args | 実行するコマンドと引数 | カスタム起動処理の指定 |
ports.containerPort | 公開するポート番号 | 通信のために必要なポートを明示 |
env | 環境変数 | アプリ設定などを渡す手段 |
volumeMounts | ボリュームをマウントするディレクトリ | データ永続化や共有に使用 |
🧱 ボリュームの定義
| 項目 | 説明 | 目的 |
|---|
volumes | Pod内で使うボリューム定義 | コンテナ間でデータを共有したり、永続化するため |
例: emptyDir, hostPath, persistentVolumeClaim | ボリュームのタイプ | 使用用途に応じて選択 |
🔁 初期化処理
| 項目 | 説明 | 目的 |
|---|
initContainers | 本コンテナの起動前に実行される一時的なコンテナ | 依存関係の準備、設定ファイルの生成など |
🔐 3. セキュリティ・リソース制限
| 項目 | 説明 | 目的 |
|---|
securityContext.runAsUser | 実行ユーザーのUID指定 | 非rootユーザーでの実行強制 |
resources.requests / limits | CPU・メモリの最低保証/上限 | ノードの効率的なリソース管理 |
readinessProbe / livenessProbe | ヘルスチェックの設定 | アプリの健全性チェックと自動再起動制御 |
🌐 4. ネットワーク関連
| 項目 | 説明 | 目的 |
|---|
Service.spec.ports | ポートマッピング | 外部アクセスのための入口定義 |
Service.spec.selector | 紐付けるPodのラベル指定 | Service → Pod のルーティング制御 |
Ingress 定義 | ドメイン名でのアクセス制御 | ホスト名・パスベースのルーティングを定義 |
💾 5. データ永続化・機密情報管理
| 項目 | 説明 | 目的 |
|---|
volumeMounts | コンテナにマウントする場所 | ファイル保存、設定ファイル共有など |
volumes.persistentVolumeClaim | 永続ボリュームの指定 | Pod再起動後もデータを保持するため |
envFrom.secretRef | Secretを環境変数として利用 | パスワードなど機密情報の安全な管理 |
configMap | 設定ファイルなどの注入 | アプリ設定をPodに注入(バージョン管理可能) |
📦 6. スケーリング・更新制御(DeploymentやStatefulSet)
| 項目 | 説明 | 目的 |
|---|
replicas | レプリカ数 | アプリの可用性と負荷分散を担保 |
strategy.type | ロールアウト戦略(RollingUpdate, Recreate) | アップデート時の挙動を定義 |
updateStrategy | StatefulSetの更新戦略 | 順序性を保った安全な更新 |
コメントを残す