説明
Unsafe sysctl は、カーネルの設定によって Pod の隔離やノードの安定性に影響する可能性があります。必要な性能調整でも、Kubernetes とカーネルのバージョンや、ほかのワークロードへの影響を確認してください。ポリシーで sysctl を許可することと、Pod が実際に値を設定することは異なります。
PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。現在のクラスターでは Pod Security Admission やポリシーエンジンで制限してください。
想定される影響
- 不適切なカーネル調整によって、アプリケーションやノードが不安定になる可能性があります。
- 隔離の条件によっては、ほかの Pod やノードのリソースに影響する可能性があります。
対処方法
- 不要な
allowed_unsafe_sysctlsの許可を削除し、Pod では使用するバージョンで安全と分類された sysctl だけを使用してください。 - 例外が必要な場合は実際の値と影響を確認し、kubelet の許可リストや専用ノードなどで利用範囲を限定してください。
- 変更後にワークロードの動作とポリシーの適用を確認してください。
例
従来の PodSecurityPolicy の部分例です。その API とプロバイダーをサポートする過去の環境で、許可リストの違いを示しています。完全なポリシー定義ではありません。
変更前
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
allowed_unsafe_sysctls = ["kernel.msg*"]
}
}
kernel.msg* 系統の unsafe sysctl を許可します。このポリシー自体が sysctl の値を変更するわけではありません。
変更後
hcl
resource "kubernetes_pod_security_policy" "policy" {
metadata {
name = "terraform-example"
}
spec {
privileged = false
allow_privilege_escalation = false
}
}
Unsafe sysctl の許可を削除しています。privileged と allow_privilege_escalation の制限は別の保護設定です。