コンテンツにスキップ

Kube State Metrics

Kube State Metrics を通じてクラスタリソースのリアルタイム情報を収集する

設定

Kube-state-metrics のデプロイ

  • Helm をインストールする(オンラインインストールモード)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
  • kube-promethues をインストールする

kube-promethues のインストールパッケージは Bitnami の Helm chart 方式を採用しています。Bitnami 公式サイト

コミュニティから最新バージョンの Chart パッケージを取得する:

helm pull oci://registry-1.docker.io/bitnamicharts/kube-prometheus

検証済みのオフライン版を取得する:

docker.io/bitnami/kube-state-metrics:2.13.0-debian-12-r6

次のコマンドを実行してファイルを展開する:

tar xf kube-prometheus-9.6.3.tgz

Values ファイルの設定説明:

global:
  # プライベートレポジトリのプロジェクトアドレスに変更する
  imageRegistry: ""
  ## E.g.
  ## imagePullSecrets:
  ##   - myRegistryKeySecretName
  ##
  # ここはプライベートレポジトリの秘密情報の secret 名に変更する
  imagePullSecrets: []

  # ここでは df-nfs-storage をクラスタ内で利用可能な storageClass に変更する
  defaultstorageClass: "df-nfs-storage"
  # ここでは df-nfs-storage をクラスタ内で利用可能な storageClass に変更する
  storageClass: "df-nfs-storage"
  ## Kubernetes プラットフォーム向けの互換性調整
  ##
  compatibility:
    ## Openshift 向けの互換性調整
    ##
    openshift:
      ## @param global.compatibility.openshift.adaptSecurityContext deployment の securityContext セクションを Openshift restricted-v2 SCC に対応させるように調整する: runAsUser、runAsGroup、fsGroup を削除し、プラットフォームに許可されたデフォルト ID を使用させる。可能な値: auto(検出された実行中クラスタが Openshift の場合に適用)、force(常に調整を実行)、disabled(調整しない)
      ##
      adaptSecurityContext: auto
## @section Common parameters
....

注意: デプロイする namespace は datakit コレクタの設定にある namespace と一致している必要があります

  • 次のコマンドを実行してデプロイする:
cd kube-prometheus

helm upgrade -i -n datakit --create-namespace  datakit . 

デプロイ完了後、次のコマンドでデプロイ成功の有無を確認する:

kubectl get pod -n datakit

Datakit の設定

  • datakit.yamlConfigMap リソースに kubernetesprometheus.conf を追加する
apiVersion: v1
kind: ConfigMap
metadata:
  name: datakit-conf
  namespace: datakit
data:
    kubernetesprometheus.conf: |-
      [inputs.kubernetesprometheus]

        [[inputs.kubernetesprometheus.instances]]
          role       = "service"
          namespaces = ["datakit"]
          selector   = "app.kubernetes.io/name=kube-state-metrics"

          scrape     = "true"
          scheme     = "http"
          port       = "__kubernetes_service_port_http_port"
          path       = "/metrics"
          params     = ""
          interval   = "15s"

          [inputs.kubernetesprometheus.instances.custom]
            measurement        = "kube-state-metrics"
            job_as_measurement = true
            [inputs.kubernetesprometheus.instances.custom.tags]
              cluster_name_k8s       = "promethues-cluster"
              job           = "kube-state-metrics"
              svc_name      = "__kubernetes_service_name"
              pod_name      = "__kubernetes_service_target_name"
              pod_namespace = "__kubernetes_service_target_namespace"
          [inputs.kubernetesprometheus.instances.auth]
            bearer_token_file      = "/var/run/secrets/kubernetes.io/serviceaccount/token"
            [inputs.kubernetesprometheus.instances.auth.tls_config]
              insecure_skip_verify = true
              cert     = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
  • kubernetesprometheus.conf をマウントする datakit.yaml ファイルの volumeMounts に追加する
- mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.conf
  name: datakit-conf
  subPath: kubernetesprometheus.conf
  readOnly: true
  • 次のコマンドを実行して datakit を再起動する
kubectl delete -f datakit.yaml
kubectl apply -f datakit.yaml

メトリクス

kube-state-metrics メトリクスセット

kube-state-metrics が収集するメトリクスは kube-state-metrics メトリクスセットにあります。ここではメトリクスの関連説明を紹介します

Metrics 説明 単位
kube_configmap_created ConfigMap リソースの作成時刻 s
kube_cronjob_created CronJob リソースの作成時刻 s
kube_cronjob_next_schedule_time CronJob の次回予定実行時刻 s
kube_cronjob_spec_failed_job_history_limit CronJob 仕様における失敗ジョブ履歴の上限数 count
kube_cronjob_spec_successful_job_history_limit CronJob 仕様における成功ジョブ履歴の上限数 count
kube_cronjob_spec_suspend CronJob が停止されているかどうか boolean
kube_cronjob_status_active CronJob の現在のアクティブジョブ数 count
kube_cronjob_status_last_schedule_time CronJob の最終スケジュール時刻 s
kube_cronjob_status_last_successful_time CronJob の最終成功実行時刻 s
kube_daemonset_created DaemonSet リソースの作成時刻 s
kube_daemonset_metadata_generation DaemonSet メタデータの世代番号 count
kube_daemonset_status_current_number_scheduled 現在スケジュール済みの DaemonSet 数 count
kube_daemonset_status_desired_number_scheduled スケジュール予定の DaemonSet 数 count
kube_daemonset_status_number_available 利用可能な DaemonSet 数 count
kube_daemonset_status_number_misscheduled スケジュール不一致の DaemonSet 数 count
kube_daemonset_status_number_ready Ready の DaemonSet 数 count
kube_daemonset_status_number_unavailable 利用不可の DaemonSet 数 count
kube_daemonset_status_observed_generation 観測された DaemonSet の世代 count
kube_daemonset_status_updated_number_scheduled 更新済みの DaemonSet 数 count
kube_deployment_created Deployment リソースの作成時刻 s
kube_deployment_metadata_generation Deployment メタデータの世代番号 count
kube_deployment_spec_paused Deployment が一時停止されているかどうか boolean
kube_deployment_spec_replicas Deployment 仕様で期待されるレプリカ数 count
kube_deployment_spec_strategy_rollingupdate_max_surge Deployment のローリング更新戦略における最大追加レプリカ数 count
kube_deployment_spec_strategy_rollingupdate_max_unavailable Deployment のローリング更新戦略における最大利用不可レプリカ数 count
kube_deployment_status_observed_generation 観測された Deployment の世代 count
kube_deployment_status_replicas Deployment の現在のレプリカ数 count
kube_deployment_status_replicas_available Deployment の現在の利用可能レプリカ数 count
kube_deployment_status_replicas_ready Deployment の現在の Ready レプリカ数 count
kube_deployment_status_replicas_unavailable Deployment の現在の利用不可レプリカ数 count
kube_deployment_status_replicas_updated Deployment の現在の更新済みレプリカ数 count
kube_endpoint_address_available 利用可能な Endpoint アドレス数 count
kube_endpoint_address_not_ready 未 Ready の Endpoint アドレス数 count
kube_endpoint_created Endpoint リソースの作成時刻 s
kube_endpoint_info Endpoint リソースの詳細情報 -
kube_endpoint_ports Endpoint のポート情報 -
kube_ingress_created Ingress リソースの作成時刻 s
kube_ingress_info Ingress リソースの詳細情報 -s
kube_ingress_metadata_resource_version Ingress リソースのバージョン番号 count
kube_ingress_path Ingress のパス情報 -
kube_job_complete Job が完了しているかどうか boolean
kube_job_created Job リソースの作成時刻 s
kube_job_info Job リソースの詳細情報 -
kube_job_spec_completions Job 仕様で期待される完了作業数 count
kube_job_spec_parallelism Job 仕様で期待される並列作業数 count
kube_job_status_active Job の現在のアクティブ作業数 count
kube_job_status_completion_time Job の完了時刻 s
kube_job_status_failed Job の失敗作業数 count
kube_job_status_start_time Job の開始時刻 s
kube_job_status_succeeded Job の成功作業数 count
kube_lease_renew_time Lease の更新時刻 s
kube_namespace_created Namespace リソースの作成時刻 s
kube_namespace_status_phase Namespace のステータスフェーズ count
kube_networkpolicy_created NetworkPolicy リソースの作成時刻 s
kube_networkpolicy_spec_egress_rules NetworkPolicy 仕様における送信ルール数 count
kube_networkpolicy_spec_ingress_rules NetworkPolicy 仕様における受信ルール数 count
kube_node_created Node リソースの作成時刻 s
kube_node_spec_unschedulable Node がスケジュール不可かどうか boolean
kube_node_status_addresses Node のステータスアドレス情報 count
kube_node_status_capacity Node の容量情報 count
kube_node_status_condition Node のステータス条件 count
kube_persistentvolume_capacity_bytes PersistentVolume の容量 byte
kube_persistentvolume_created PersistentVolume リソースの作成時刻 s
kube_persistentvolume_info PersistentVolume リソースの詳細情報 count
kube_persistentvolumeclaim_created PersistentVolumeClaim リソースの作成時刻 s
kube_persistentvolumeclaim_resource_requests_storage_bytes PersistentVolumeClaim が要求するストレージリソース byte
kube_pod_completion_time Pod の完了時刻 s
kube_pod_container_state_started Pod 内のコンテナが起動済みかどうか boolean
kube_pod_container_status_last_terminated_exitcode Pod 内コンテナの直近終了時の exit code count
kube_pod_container_status_last_terminated_timestamp Pod 内コンテナの直近終了タイムスタンプ s
kube_pod_container_status_ready Pod 内のコンテナが Ready かどうか boolean
kube_pod_container_status_restarts_total Pod 内コンテナの累計再起動回数 count
kube_pod_container_status_running Pod 内のコンテナが実行中かどうか boolean
kube_pod_container_status_terminated Pod 内のコンテナが終了済みかどうか boolean
kube_pod_container_status_waiting Pod 内のコンテナが待機中かどうか boolean
kube_pod_created Pod リソースの作成時刻 s
kube_pod_deletion_timestamp Pod リソースの削除タイムスタンプ s
kube_pod_init_container_status_ready Pod の初期化コンテナが Ready かどうか boolean
kube_pod_init_container_status_restarts_total Pod 初期化コンテナの累計再起動回数 count
kube_pod_init_container_status_running Pod 初期化コンテナが実行中かどうか boolean
kube_pod_init_container_status_terminated Pod 初期化コンテナが終了済みかどうか boolean
kube_pod_init_container_status_waiting Pod 初期化コンテナが待機中かどうか boolean
kube_pod_spec_volumes_persistentvolumeclaims_readonly Pod 仕様における PersistentVolumeClaim が読み取り専用かどうか boolean
kube_pod_start_time Pod の開始時刻 s
kube_pod_status_container_ready_time Pod 内コンテナが Ready になった時刻 s
kube_pod_status_initialized_time Pod の初期化完了時刻 s
kube_pod_status_ready Pod が Ready かどうか boolean
kube_pod_status_ready_time Pod が Ready になった時刻 s
kube_pod_status_scheduled Pod がスケジュール済みかどうか boolean
kube_poddisruptionbudget_status_current_healthy PodDisruptionBudget の現在の健全な Pod 数 count
kube_poddisruptionbudget_status_desired_healthy PodDisruptionBudget が期待する健全な Pod 数 count
kube_poddisruptionbudget_status_expected_pods PodDisruptionBudget が期待する Pod 数 count
kube_poddisruptionbudget_status_observed_generation PodDisruptionBudget の観測済み世代 count
kube_poddisruptionbudget_status_pod_disruptions_allowed PodDisruptionBudget で許可される Pod 中断数 count
kube_replicaset_created ReplicaSet リソースの作成時刻 s
kube_replicaset_spec_replicas ReplicaSet 仕様で期待されるレプリカ数 count
kube_replicaset_status_fully_labeled_replicas ReplicaSet の完全ラベル付きレプリカ数 count
kube_replicaset_status_observed_generation ReplicaSet の観測済み世代 count
kube_replicaset_status_ready_replicas ReplicaSet の Ready レプリカ数 count
kube_replicaset_status_replicas ReplicaSet の現在のレプリカ数 count
kube_secret_created Secret リソースの作成時刻 s
kube_service_created Service リソースの作成時刻 s
kube_statefulset_created StatefulSet リソースの作成時刻 s
kube_statefulset_replicas ReplicaSet の現在のレプリカ数 count
kube_statefulset_status_observed_generation StatefulSet の観測済み世代 count
kube_statefulset_status_replicas StatefulSet の現在のレプリカ数 count
kube_statefulset_status_replicas_available StatefulSet の利用可能レプリカ数 count
kube_statefulset_status_replicas_current ReplicaSet の現在のレプリカ数 count
kube_statefulset_status_replicas_ready StatefulSet の Ready レプリカ数 count
kube_statefulset_status_replicas_updated StatefulSet の更新済みレプリカ数 count
kube_storageclass_created StorageClass リソースの作成時刻 s

フィードバック

このページは役に立ちましたか?