Kubernetesガイダンスレポート

ベストプラクティスに基づく推奨事項により、Kubernetes環境のコスト効率とパフォーマンスの強化、信頼性の確保を行います。この推奨事項は、優先度レベル(高、中、低)でグループ分けされます。

次のベストプラクティスにより、高可用性の維持とダウンタイムの最小化を行います。

ベストプラクティス

ノード

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. ノードの高CPU使用量

優先度

ベストプラクティス

ノードのCPUが90%を超過しないようにします。

説明

ノードキャパシティに基づいて、高いCPUを使用する傾向にあるリソースに制限を設けます。

3. ノードの高メモリ使用量

優先度

ベストプラクティス

ノードメモリ使用量が90%を超過しないようにします。

説明

ノードキャパシティに基づいて、高いメモリを使用する傾向にあるリソースに制限を設けます。

4. ノードの低いCPU使用量

優先度

ベストプラクティス

ノードのCPU使用量が10%未満にならないようにします。

説明

あまり使用していないノードの削除やスケールダウンを行い、費用とリソースを削減します。

5. ノードの低いメモリ使用量

優先度

ベストプラクティス

ノードのメモリ使用量が10%未満にならないようにします。

説明

まり使用していないノードの削除やスケールダウンを行い、費用とリソースを削減します。

ポッド

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. コントローラーのないポッド

優先度

ベストプラクティス

適切なコントローラーでポッドをデプロイします。

説明

コントローラーのないポッドは潜在的な脅威をもち、スケーリングを使用できません。これらコントローラーによりポッドアクセスのリスクを削減します。ノード障害イベントでは、これらポッドは再スケジュールされません。

3. デフォルトネームスペースでのワークロード実行

優先度

ベストプラクティス

ワークロードを分かれたネームスペースやプロジェクトに移行します。

説明

ワークロードの分かれたネームスペースは、オブジェクトを整理し、論理パーティションをKubernetesクラスターで作成することができます。これによりセキュリティを強化します。

デプロイメント

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. CPUリクエスト

優先度

ベストプラクティス

ワークロードにCPUリクエストを設定します。

説明

ワークロードにコンテナーCPUリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPUリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

3. CPU制限

優先度

ベストプラクティス

CPU制限をワークロードに設定します。

説明

ワークロードにCPU制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPU制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

4. メモリリクエスト

優先度

ベストプラクティス

メモリリクエストをワークロードに設定します。

説明

ワークロードにメモリリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

5. メモリ制限

優先度

ベストプラクティス

メモリ制限をワークロードに設定します。

説明

ワークロードにメモリ制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリ制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

6. Liveness Probe

優先度

ベストプラクティス

Liveness Probeを設定してコンテナーのステータスが未準備の場合に再起動を行います。

説明

トラフィックを受信していないコンテナーのステータスを把握し、コンテナーを再起動することが重要です。

7. Readiness Probe

優先度

ベストプラクティス

Readiness Probeを設定し、準備済ステータスのコンテナーを把握します。

説明

Readnessのコンテナーは不明ステータスとなり、準備ステータスであっても、トラフィックが停滞可能性があります。

8. イメージタグの未指定

優先度

ベストプラクティス

タグを指定して、コンテナーイメージ管理の制御を行います。

説明

タグにより、アプリケーションの更新が行われた際に制御を行います。イメージバージョンの違いにより、予期せぬ挙動が発生するリスクを削減します。

9. ImagePullPolicyがAlwaysに設定されていない

優先度

ベストプラクティス

ImagePullPolicyをAlwaysに設定し、イメージバージョンを最新に保ちます。

説明

ImagePullPolicyをAlwaysに設定すると、イメージの最新バージョンを毎回ポッドにデプロイして起動します。

10. 許可されたRunAsRoot

優先度

ベストプラクティス

RunAsRootが許可されていないことを確認します。

説明

RunAsRootが許可されている場合、rootユーザーが全権限をもつこととなり、セキュリティに危険が生じます。

11. 許可されたRunAsPrivileged

優先度

ベストプラクティス

RunAsPrivilegedが許可されていないことを確認します。

説明

RunAsPrivilegedが許可されていると、コンテナーがカーネル機能や装置を含むすべてのホストのシステムリソースにアクセスできるようになります。

12. 許可されたAllowPrivilegedEscalations

優先度

ベストプラクティス

AllowPrivilegedEscalationsが許可されていないことを確認します。

説明

AllowPrivilegedEscalationsが許可されている場合、その親プロセス以上のより多い権限が取得されます。

13. ReadOnlyRootFileSystemの未設定

優先度

ベストプラクティス

ReadOnlyRootFileSystemをTrueに設定します。

説明

ReadOnlyRootFileSystemがTrueに設定されていないと、コンテナーがホストボリュームにアクセスし編集できるようになります。

14. デフォルトネームスペースのワークロード実行

優先度

ベストプラクティス

ワークロードを分かれたネームスペースやプロジェクトに移行します。

説明

ワークロードの分かれたネームスペースは、オブジェクトを整理し、論理パーティションをKubernetesクラスターで作成することができます。これによりセキュリティを強化します。

15. デプロイメントごとに1レプリカの実行

優先度

ベストプラクティス

フォールトトレランスを実現するために、デプロイメントに複数のレプリカを作成します。

説明

現在のレプリカが失敗すると、その他のレプリカがワークロードをオペレーションを行います。デプロイメントに複数のレプリカを作成することが理想的です。

デーモンセット

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. CPUリクエスト

優先度

ベストプラクティス

ワークロードにCPUリクエストを設定します。

説明

ワークロードにコンテナーCPUリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPUリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

3. CPU制限

優先度

ベストプラクティス

ワークロードにCPU制限を設定します。

説明

ワークロードにコンテナーCPU制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPU制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

4. メモリリクエスト

優先度

ベストプラクティス

ワークロードにメモリリクエストを設定します。

説明

ワークロードにコンテナーメモリリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

5. メモリ制限

優先度

ベストプラクティス

ワークロードにメモリ制限を設定します。

説明

ワークロードにコンテナーメモリ制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリ制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

6. Liveness Probe

優先度

ベストプラクティス

Liveness Probeを設定してコンテナーのステータスが未準備の場合に再起動を行います。

説明

トラフィックを受信していないコンテナーのステータスを把握し、コンテナーを再起動することが重要です。

7. Readiness Probe

優先度

ベストプラクティス

Readiness Probeを設定し、準備済ステータスのコンテナーを把握します。

説明

Readnessのコンテナーは不明ステータスとなり、準備ステータスであっても、トラフィックが停滞可能性があります。

8. イメージタグの未指定

優先度

ベストプラクティス

タグを指定して、コンテナーイメージ管理の制御を行います。

説明

タグにより、アプリケーションの更新が行われた際に制御を行います。イメージバージョンの違いにより、予期せぬ挙動が発生するリスクを削減します。

9. ImagePullPolicyがAlwaysに設定されていない

優先度

ベストプラクティス

ImagePullPolicyをAlwaysに設定し、イメージバージョンを最新に保ちます。

説明

ImagePullPolicyをAlwaysに設定すると、イメージの最新バージョンを毎回ポッドにデプロイして起動します。

10. RunAsRoot allowed

優先度

10. 許可されたRunAsRoot

優先度

ベストプラクティス

RunAsRootが許可されていないことを確認します。

説明

RunAsRootが許可されている場合、rootユーザーが全権限をもつこととなり、セキュリティに危険が生じます。

11. 許可されたRunAsPrivileged

優先度

ベストプラクティス

RunAsPrivilegedが許可されていないことを確認します。

説明

RunAsPrivilegedが許可されていると、コンテナーがカーネル機能や装置を含むすべてのホストのシステムリソースにアクセスできるようになります。

12. 許可されたAllowPrivilegedEscalations

優先度

ベストプラクティス

AllowPrivilegedEscalationsが許可されていないことを確認します。

説明

AllowPrivilegedEscalationsが許可されている場合、その親プロセス以上のより多い権限が取得されます。

13. ReadOnlyRootFileSystemの未設定

優先度

ベストプラクティス

ReadOnlyRootFileSystemをTrueに設定します。

説明

ReadOnlyRootFileSystemがTrueに設定されていないと、コンテナーがホストボリュームにアクセスし編集できるようになります。

14. デフォルトネームスペースのワークロード実行

優先度

ベストプラクティス

ワークロードを分かれたネームスペースやプロジェクトに移行します。

説明

ワークロードの分かれたネームスペースは、オブジェクトを整理し、論理パーティションをKubernetesクラスターで作成することができます。これによりセキュリティを強化します。

ステートフルセット

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. CPUリクエスト

優先度

ベストプラクティス

ワークロードにCPUリクエストを設定します。

説明

ワークロードにコンテナーCPUリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPUリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

3. CPU制限

優先度

ベストプラクティス

ワークロードにCPU制限を設定します。

説明

ワークロードにコンテナーCPU制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。CPU制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

4. メモリリクエスト

優先度

ベストプラクティス

ワークロードにメモリリクエストを設定します。

説明

ワークロードにコンテナーメモリリクエストが指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリリクエストを全ワークロードに設定して、クラスターがロードを行えるようにします。

5. メモリ制限

優先度

ベストプラクティス

ワークロードにメモリ制限を設定します。

説明

ワークロードにコンテナーメモリ制限が指定されていない場合、クラスターは全ノードにわたるロードを行えません。メモリ制限を全ワークロードに設定して、クラスターがロードを行えるようにします。

6. Liveness Probe

優先度

ベストプラクティス

Liveness Probeを設定してコンテナーのステータスが未準備の場合に再起動を行います。

説明

トラフィックを受信していないコンテナーのステータスを把握し、コンテナーを再起動することが重要です。

7. Readiness Probe

優先度

ベストプラクティス

Readiness Probeを設定し、準備済ステータスのコンテナーを把握します。

説明

Readnessのコンテナーは不明ステータスとなり、準備ステータスであっても、トラフィックが停滞可能性があります。

8. イメージタグの未指定

優先度

ベストプラクティス

タグを指定して、コンテナーイメージ管理の制御を行います。

説明

タグにより、アプリケーションの更新が行われた際に制御を行います。イメージバージョンの違いにより、予期せぬ挙動が発生するリスクを削減します。

9. ImagePullPolicyがAlwaysに設定されていない

優先度

ベストプラクティス

ImagePullPolicyをAlwaysに設定し、イメージバージョンを最新に保ちます。

説明

ImagePullPolicyをAlwaysに設定すると、イメージの最新バージョンを毎回ポッドにデプロイして起動します。

10. RunAsRoot allowed

優先度

10. 許可されたRunAsRoot

優先度

ベストプラクティス

RunAsRootが許可されていないことを確認します。

説明

RunAsRootが許可されている場合、rootユーザーが全権限をもつこととなり、セキュリティに危険が生じます。

11. 許可されたRunAsPrivileged

優先度

ベストプラクティス

RunAsPrivilegedが許可されていないことを確認します。

説明

RunAsPrivilegedが許可されていると、コンテナーがカーネル機能や装置を含むすべてのホストのシステムリソースにアクセスできるようになります。

12. 許可されたAllowPrivilegedEscalations

優先度

ベストプラクティス

AllowPrivilegedEscalationsが許可されていないことを確認します。

説明

AllowPrivilegedEscalationsが許可されている場合、その親プロセス以上のより多い権限が取得されます。

13. ReadOnlyRootFileSystemの未設定

優先度

ベストプラクティス

ReadOnlyRootFileSystemをTrueに設定します。

説明

ReadOnlyRootFileSystemがTrueに設定されていないと、コンテナーがホストボリュームにアクセスし編集できるようになります。

14. デフォルトネームスペースのワークロード実行

優先度

ベストプラクティス

ワークロードを分かれたネームスペースやプロジェクトに移行します。

説明

ワークロードの分かれたネームスペースは、オブジェクトを整理し、論理パーティションをKubernetesクラスターで作成することができます。これによりセキュリティを強化します。

ジョブ

1. ラベルのないリソース

優先度

ベストプラクティス

ワークロードに適切なラベルを割り当てます。

説明

ラベルのないリソースを追跡して、影響時間とリソース管理を最適化します。ラベルを割り当てて、リソースハンドリングの効率を上昇させます。

2. 完了後のジョブクリーンアップ

優先度

ベストプラクティス

ジョブにttlSecondsAfterFinishedパラメーターを設定し、完了後にクリーンアップします。

説明

ttlSecondsAfterFinishedパラメーターはオペレーションが完了したジョブオブジェクトのライフタイムを制限します。ジョブがクリーンアップされないと、クラスター操作に影響を与えます。