操作と→管理の実行ポリシーとランタイムの制限
実行ポリシーと実行時の制限
1)目的
ランタイムポリシーは、サービスの動作を予測可能で安全かつ経済的にします。「騒々しい隣人」を制限し、漏れや過熱を防ぎ、負荷が増加したときにSLOのコンプライアンスと保持を確保します。
主な目的:分離、資源の公平な配分、制御された劣化、再現性、監査。
2)スコープ
コンピューティングとメモリ:CPU、 RAM、 GCの一時停止、スレッド制限。
ディスク/ストレージ:IOPS/スループット、クォータ、fs-policies(読み取り専用)。
Сеть: egress/ingress、帯域幅シェーピング、ネットワークポリシー。
プロセス/システムコール:seccomp、 capability、 ulimit。
オーケストレーション:Kubernetes QoS、リクエスト/リミット、優先順位、緊張/親和性。
API/ゲートウェイ:レート制限、クォータ、タイムアウト/リトレイ、サーキットブレーカ。
データ/ETL/ストリーム:バッチ/ストリーム並行性、消費者の遅れ予算。
セキュリティ:AppArmor/SELinux、 rootless、 秘密/kofigi。
Policy-as-Code: OPA/Gatekeeper、 Kyverno、 Conftest。
3)基本原則
デフォルトでフェイルセーフ:不要なリクエストをドロップするよりもドロップする方が良いです。
予算駆動:タイムアウト/リトレイは、要求時間予算とSLOエラー予算に適合します。
スモールブラスト半径:名前空間/プール/ホスト/シャード分離。
宣言&監査可能:すべての制限-コード/リポジトリ+変更ログ。
マルチテナントの公平性:テナント/チームはクラスタ全体を「吸い出す」ことはできません。
4)コンピューティングとメモリ
4.1 Kubernetes cgroup v2
requests/limits: requestsはCPU/メモリの共有を保証します。制限には、スロットリング/OOMキラーが含まれます。
QoSクラス:Guaranteed/Burstable/BestEffort-重要なワークフローをGuaranteed/Burstableに保ちます。
CPU: 'cpu。共有'、'cpu。最高'(スロットル)、ピン留めのためのCPuset。
メモリ:'メモリ。max'、'memory。スワップします。max'(通常はスワップオフ)oom_score_adjを優先します。
4.2パターン
ヘッドルーム20-30%ノード上、重複のためのアンチアフィニティ。
GC制限:JVM '-Xmx' <k8sメモリ制限;Go: 'GOMEMLIMIT';ノード:'--max-old-space-size'。
ulimit: 'nofile'、 'nproc'、 'fsize'-サービスプロファイル。
5)ディスクおよび貯蔵
PVC/クラスタ・ストレージ上のIOPS/スループット・クォータ;ログ/データの分離。
読み取り専用ルートFS、一時ファイルのtmpfs、サイズ制限'/tmp'。
FS-watchdog:ボリューム充填とinode成長のアラート。
6)ネットワークとトラフィック
NetworkPolicy (ingress/egress)-ゼロトラスト東西。
帯域幅の制限:tc/egress-policies、重要なフローのQoS/DSCP。
出力コントローラ:許可されたドメイン/サブネットのリスト、監査DNS。
mTLS+TLSポリシー-暗号化と強制プロトコルのバージョン。
7)プロセス安全
Seccomp (allowlist syscalls)、 AppArmor/SELinuxプロファイル。
Linuxの機能をドロップします(最小限)、'runAsNonRoot'、 'readOnlyRootFilesystem'。
ルートレスコンテナ、署名された画像と証明。
Vault/KMS経由で秘密のみ、短いTTLでtmpトークン。
8)タイムポリシー: タイムアウト、リトリート、予算
タイムアウト予算:すべてのホップの合計≤ SLAエンドツーエンド。
バックオフ+ジッタ付きのレトライ、エラークラスの最大試行回数。
サーキットブレーカ:エラー%/タイムアウトp95をスレッショルド→高速障害の上で開きます。
隔壁:クリティカルパスのための独立した接続プール/キュー。
Backpressure:生産者が消費者を遅らせることを制限します。
9)レート制限、クォータと優先度
アルゴリズム:トークン/リークバケット、GCRA;local+distributed (Redis/Envoy/global)。
粒度:API key/user/organization/region/endpoint。
優先勾配:「支払/承認」フロー-金、分析-ブロンズ。
1日/月あたりのクォータ、「バースト」および「持続」制限;429+Retry-After。
10)オーケストレーションとプランナー
PriorityClass:変位からのP1ポッドの保護。
PodDisruptionBudget:アップデートのダウンタイム制限。
Tains/Tolerations、(反)親和性-分離ワークロード。
RuntimeClass:サンドボックス用のgVisor/Firecracker/Wasm。
ガードのしきい値とmax-replicasによる水平/垂直オートスケーリング。
11) データ/ETL/ストリームポリシー
ジョブ/トピックごとの並行性、最大バッチサイズ、チェックポイント間隔。
消費者の遅延予算:警告/クリティカル;DLQとリトレイの制限。
店頭の新鮮さSLA、プロッドトラフィックのピーク時に重い仕事の一時停止。
12)ポリシーとしてコードと入場管理
OPA Gatekeeper/Kyverno:リクエスト/制限なしのポッドはなく、'readOnlyRootFilesystem'、 'hostNetwork'、':latest'はありません。
事前コミットHelm/K8s/TerraformチェックのためのConftest。
変異ポリシー:自動追加サイドカー(mTLS)、注釈、seccompProfile。
yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: require-resources spec:
validationFailureAction: Enforce rules:
- name: check-limits match:
resources:
kinds: ["Pod"]
validate:
message: "We need resources. requests/limits for CPU and memory"
pattern:
spec:
containers:
- resources:
requests:
cpu: "?"
memory: "?"
limits:
cpu: "?"
memory: "?"
OPA (Rego)の例-タイムアウト≤ 800ミリ秒:
rego package policy. timeout
deny[msg] {
input. kind == "ServiceConfig"
input. timeout_ms> 800 msg: = sprintf ("timeout% dms exceeds budget 800ms," [input. timeout_ms])
}
13)観測可能性とコンプライアンス指標
コンプライアンス%:正しいリクエスト/リミット/ラベルを持つポードの割合。
セキュリティ姿勢:seccomp/AppArmor/rootlessでポッドを共有します。
Rate-limit hit%、 shed%、 throttle%、 429 share。
p95タイムアウト/リトレース、サーキットオープン期間。
OOMが殺す/立ち退き、CPUスロットル秒。
ネットワークエグレスはイベントを拒否し、egress allowlistはミスします。
14)チェックリスト
サービスをレイアウトする前に
- リクエスト/制限が書かれています。QoS ≥バーステーブル
- エンドツーエンドのSLAに適合するタイムアウトとリトレイ
- 外部依存関係に対して回路ブレーカ/隔壁を有効にする
- NetworkPolicy (ingress/egress) mTLS
- Seccomp/AppArmor、ドロップ機能、ルートなし、読み取り専用FS
- APIゲートウェイ/サービスのレート制限とクォータ
- 指定されたPDB/priority/affinity;オートスケールが設定されています
毎月
- 監査ポリシー例外(TTL)
- 時間/エラー予算の確認
- ファイヤードリルテスト:小屋/背圧/遮断器
- シークレット/証明書の回転
15)アンチパターン
リクエスト/制限なし:「バースト」は隣人を食べる→カスケードクラッシュ。
ジッタのない世界的な後退:中毒の嵐。
無限のタイムアウト:「ハング」接続とプールの枯渇。
':latest'とmutableタグ:予測不可能なランタイムをビルドします。
開放:リークと管理されていない依存関係。
No PDB:更新はプール全体をノックアウトします。
16)ミニプレイブック
支払サービスのA。 CPUのスロットル%
1.制限/要求とプロファイルのホットパスをチェックします。
2.一時的にリクエストを上げ、p95レイテンシでオートスケールをオンにします。
3.制限/レートのキャッシュバックを有効にし、クエリの複雑さを軽減します。
4.修正後:非正規化/インデックス、制限の改訂。
B。 429の成長とAPIの苦情
1.キー/組織のレポート→クォータに実行されました。
2.階層クォータ(per- org→per -key)を入力し、ゴールドのバーストを上げます。
3.バックオフのコミュニケーションとガイダンス。適応制限を有効にします。
B。 マスOOMが殺す
1.同時性を低減し、ヒープ制限とプロファイリングを有効にします。
2.Xmx/GOMEMLIMITを再計算して、実際のピーク使用量を確認します。
3.GC/プールを再訓練し、スワップオフとソフトリミットアラートを追加します。
17)構成例
安全な設定(フラグメント)を持つK8sコンテナ:yaml securityContext:
runAsNonRoot: true allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities:
drop: ["ALL"]
Envoy rate-limit(概念的にフラグメント):
yaml rate_limit_policy:
actions:
- request_headers:
header_name: "x-api-key"
descriptor_key: "api_key"
Nginxの入力-タイムアウトと制限:
yaml nginx. ingress. kubernetes. io/proxy-connect-timeout: "2s"
nginx. ingress. kubernetes. io/proxy-read-timeout: "1s"
nginx. ingress. kubernetes. io/limit-rps: "50"
18)変更およびインシデント管理との統合
すべてのポリシーの緩和は、RFC/CABとTTLによる一時的な例外を介して行われます。
ポリシー違反インシデント→死後とルールの更新。
コンプライアンスダッシュボードはリリースカレンダーに接続されています。
19)ボトムライン
実行ポリシーはプラットフォームの「手すり」です。彼らは高速運転を妨げず、落下を許可しません。宣言的制約、自動執行、優れた指標、例外規律は、カオス的搾取を管理可能で予測可能なシステムに変えます。