Kubernetes 制御プレーンのプロファイリング設定の確認

不要な性能診断を無効にし、必要な診断用エンドポイントへのアクセスを制限してください。

説明

--profiling は kube-apiserver や kube-controller-manager などの性能プロファイリングを制御します。診断には有用ですが、不要な有効化と過剰なアクセス権限が重なると、運用情報が露出する場合があります。省略の有無だけで判断せず、実行バージョンのデフォルト値と実際の設定を確認する必要があります。

想定される影響

  • 診断用エンドポイントにアクセスできる主体が、内部の実行情報を取得する場合があります。
  • 不要な診断機能により、運用で管理するアクセス経路が増える場合があります。

対処方法

  • 性能分析が不要なら、kube-apiserver と kube-controller-manager に --profiling=false を設定してください。KubeSchedulerConfiguration を使う場合は、そのバージョンの enableProfiling: false を適用してください。
  • 必要な診断機能には認証・認可とネットワーク制限を適用してください。一時的に有効にした場合は、分析後に元の設定へ戻し、実際の設定を確認してください。

例

v1.30.0 のプロファイリング引数だけを比較する既存の抜粋です。API サーバーの認証・ストレージ・ネットワークなどの他の設定は省略しています。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --profiling=true

プロファイリングを有効にします。実際の公開範囲は診断用エンドポイントのアクセス制御によります。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --profiling=false

プロファイリングを無効にします。他の API サーバーへのアクセス保護を代替するものではありません。

参考資料