LoginSignup
6
0

More than 1 year has passed since last update.

Kubernetes 1.26 SIG Instrumentation の変更内容

Last updated at Posted at 2022-12-14

はじめに

この記事では、Kubernetes 1.26 の CHANGELOG から Metrics の変更と SIG Instrumentation の取り組みについてまとめています。

Kubernetes v1.26 で SIG Instrumentation が扱う主要なテーマに Kubernetes メトリクスの改善(Improvements to Kubernetes metrics) があり、注目すべきいくつかの改善が入っています。それではその内容を確認していきます。

Metrics Stability Framework の拡張

Metrics Stability Framework の拡張が 導入(Alpha) されました。

v1.25 までの Stability Level は ALPHASTABLE のみでしたが、v1.26 では INTERNALBETA が追加されました。

// StabilityLevel represents the API guarantees for a given defined metric.
type StabilityLevel string

const (
	// INTERNAL metrics have no stability guarantees, as such, labels may
	// be arbitrarily added/removed and the metric may be deleted at any time.
	INTERNAL StabilityLevel = "INTERNAL"
	// ALPHA metrics have no stability guarantees, as such, labels may
	// be arbitrarily added/removed and the metric may be deleted at any time.
	ALPHA StabilityLevel = "ALPHA"
	// BETA metrics are governed by the deprecation policy outlined in by
	// the control plane metrics stability KEP.
	BETA StabilityLevel = "BETA"
	// STABLE metrics are guaranteed not be mutated and removal is governed by
	// the deprecation policy outlined in by the control plane metrics stability KEP.
	STABLE StabilityLevel = "STABLE"
)

Stability Level は Kubernetes 独自のメトリクスフレームで定義されたものです。Prometheus のメトリクスのヘルプテキストに # HELP xxxxx [ALPHA] xxxx のようなフォーマットで記録されます。Metrics Stability Framework 自体は Kubernetes v1.17 で Beta、v1.21 で Stable となっています。

メトリクスのヘルプテキストの例

# HELP apiserver_audit_event_total [ALPHA] Counter of audit events generated and sent to the audit backend.
# TYPE apiserver_audit_event_total counter
apiserver_audit_event_total 0

KEP を確認すると INTERNAL は内部開発用であり、どのバージョンでも自由に消せるようなので Kubernetes 利用者(Kubernetes Administrator/Kubernetes Application Developer)が利用することは避けた方が良さそうです。

BETAALPHASTABLE の間の安定性です。モチベーションを見ると ALPHA をより初期段回のメトリクスである点を強調させ、今までの ALPHA 相当の安定性を BETA として扱う方向のようです。

ALPHABETA の Stability Level は Feature Gate のステージと同様に周期を決めて強制的にアップグレード、または非推奨となるような仕組みが検討されています。Alpha では未実装となり Beta で実装予定になります。

また今回のリリースでは Stability Level や Label が記載されたメトリクスのドキュメントも公開されました :tada:
このドキュメントはコードから自動で生成されています。Kubernetes の Changelog だけではどうしても抜け漏れが発生するので、私も次のバージョンからは自動生成されたものを比較しメトリクスの記事を記載する予定です。

Kubernetes コンポーネントの Service Level Indicator (SLI) メトリクス

Kubernetes コンポーネントの Service Level Indicator (SLI) メトリクスが導入(Alpha)されました。
ComponentSLIs フィーチャーゲートを有効にすると、ヘルスチェックのデータからメトリクスに変換された Service Level Objectives(SLO) を算出できるメトリクスのエンドポイント /metrics/slis が利用できるようになります。

実際に ComponentSLIs フィーチャーゲートを有効にして /metrics/slis エンドポイントにアクセスすると Cauge: kubernetes_healthcheckCounter: kubernetes_healthchecks_total の 2 つのメトリクスが取得できます。

kube-controller-manager の SLI メトリクス
# HELP kubernetes_healthcheck [ALPHA] This metric records the result of a single healthcheck.
# TYPE kubernetes_healthcheck gauge
kubernetes_healthcheck{name="attachdetach",type="healthz"} 1
kubernetes_healthcheck{name="bootstrapsigner",type="healthz"} 1
kubernetes_healthcheck{name="clusterrole-aggregation",type="healthz"} 1
kubernetes_healthcheck{name="cronjob",type="healthz"} 1
kubernetes_healthcheck{name="csrapproving",type="healthz"} 1
kubernetes_healthcheck{name="csrcleaner",type="healthz"} 1
kubernetes_healthcheck{name="csrsigning",type="healthz"} 1
kubernetes_healthcheck{name="daemonset",type="healthz"} 1
kubernetes_healthcheck{name="deployment",type="healthz"} 1
kubernetes_healthcheck{name="disruption",type="healthz"} 1
kubernetes_healthcheck{name="endpoint",type="healthz"} 1
kubernetes_healthcheck{name="endpointslice",type="healthz"} 1
kubernetes_healthcheck{name="endpointslicemirroring",type="healthz"} 1
kubernetes_healthcheck{name="ephemeral-volume",type="healthz"} 1
kubernetes_healthcheck{name="garbagecollector",type="healthz"} 1
kubernetes_healthcheck{name="horizontalpodautoscaling",type="healthz"} 1
kubernetes_healthcheck{name="job",type="healthz"} 1
kubernetes_healthcheck{name="leaderElection",type="healthz"} 1
kubernetes_healthcheck{name="namespace",type="healthz"} 1
kubernetes_healthcheck{name="nodeipam",type="healthz"} 1
kubernetes_healthcheck{name="nodelifecycle",type="healthz"} 1
kubernetes_healthcheck{name="persistentvolume-binder",type="healthz"} 1
kubernetes_healthcheck{name="persistentvolume-expander",type="healthz"} 1
kubernetes_healthcheck{name="podgc",type="healthz"} 1
kubernetes_healthcheck{name="pv-protection",type="healthz"} 1
kubernetes_healthcheck{name="pvc-protection",type="healthz"} 1
kubernetes_healthcheck{name="replicaset",type="healthz"} 1
kubernetes_healthcheck{name="replicationcontroller",type="healthz"} 1
kubernetes_healthcheck{name="resourcequota",type="healthz"} 1
kubernetes_healthcheck{name="root-ca-cert-publisher",type="healthz"} 1
kubernetes_healthcheck{name="serviceaccount",type="healthz"} 1
kubernetes_healthcheck{name="statefulset",type="healthz"} 1
kubernetes_healthcheck{name="tokencleaner",type="healthz"} 1
kubernetes_healthcheck{name="ttl",type="healthz"} 1
kubernetes_healthcheck{name="ttl-after-finished",type="healthz"} 1
# HELP kubernetes_healthchecks_total [ALPHA] This metric records the results of all healthcheck.
# TYPE kubernetes_healthchecks_total counter
kubernetes_healthchecks_total{name="attachdetach",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="bootstrapsigner",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="clusterrole-aggregation",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="cronjob",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="csrapproving",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="csrcleaner",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="csrsigning",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="daemonset",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="deployment",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="disruption",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="endpoint",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="endpointslice",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="endpointslicemirroring",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="ephemeral-volume",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="garbagecollector",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="horizontalpodautoscaling",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="job",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="leaderElection",status="success",type="healthz"} 138
kubernetes_healthchecks_total{name="namespace",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="nodeipam",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="nodelifecycle",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="persistentvolume-binder",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="persistentvolume-expander",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="podgc",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="pv-protection",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="pvc-protection",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="replicaset",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="replicationcontroller",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="resourcequota",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="root-ca-cert-publisher",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="serviceaccount",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="statefulset",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="tokencleaner",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="ttl",status="success",type="healthz"} 137
kubernetes_healthchecks_total{name="ttl-after-finished",status="success",type="healthz"} 137

フィーチャーゲートメトリクスの提供

Kubernetes コンポーネントごとにフィーチャーゲートの有効無効が確認できる kubernetes_feature_enabled メトリクスが利用できるようになりました。

https://github.com/kubernetes/kubernetes/pull/112690

# HELP kubernetes_feature_enabled [ALPHA] This metric records the data about the stage and enablement of a k8s feature.
# TYPE kubernetes_feature_enabled gauge
kubernetes_feature_enabled{name="APIListChunking",stage="BETA"} 1
kubernetes_feature_enabled{name="APIPriorityAndFairness",stage="BETA"} 1
kubernetes_feature_enabled{name="APIResponseCompression",stage="BETA"} 1
kubernetes_feature_enabled{name="APISelfSubjectReview",stage="ALPHA"} 0
kubernetes_feature_enabled{name="APIServerIdentity",stage="ALPHA"} 0
kubernetes_feature_enabled{name="APIServerTracing",stage="ALPHA"} 0
kubernetes_feature_enabled{name="AdvancedAuditing",stage=""} 1
kubernetes_feature_enabled{name="AggregatedDiscoveryEndpoint",stage="ALPHA"} 0
kubernetes_feature_enabled{name="AllAlpha",stage="ALPHA"} 0
kubernetes_feature_enabled{name="AllBeta",stage="BETA"} 0
kubernetes_feature_enabled{name="AnyVolumeDataSource",stage="BETA"} 1
kubernetes_feature_enabled{name="AppArmor",stage="BETA"} 1
kubernetes_feature_enabled{name="CPUManager",stage="BETA"} 1
kubernetes_feature_enabled{name="CPUManagerPolicyAlphaOptions",stage="ALPHA"} 0
kubernetes_feature_enabled{name="CPUManagerPolicyBetaOptions",stage="BETA"} 1
kubernetes_feature_enabled{name="CPUManagerPolicyOptions",stage="BETA"} 1
kubernetes_feature_enabled{name="CSIInlineVolume",stage=""} 1
kubernetes_feature_enabled{name="CSIMigration",stage=""} 1
kubernetes_feature_enabled{name="CSIMigrationAWS",stage=""} 1
kubernetes_feature_enabled{name="CSIMigrationAzureDisk",stage=""} 1
kubernetes_feature_enabled{name="CSIMigrationAzureFile",stage="BETA"} 1
kubernetes_feature_enabled{name="CSIMigrationGCE",stage=""} 1
kubernetes_feature_enabled{name="CSIMigrationPortworx",stage="BETA"} 0
kubernetes_feature_enabled{name="CSIMigrationRBD",stage="ALPHA"} 0
kubernetes_feature_enabled{name="CSIMigrationvSphere",stage="BETA"} 1
kubernetes_feature_enabled{name="CSINodeExpandSecret",stage="ALPHA"} 0
kubernetes_feature_enabled{name="CSIStorageCapacity",stage=""} 1
kubernetes_feature_enabled{name="CSIVolumeHealth",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ContainerCheckpoint",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ContextualLogging",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ControllerManagerLeaderMigration",stage=""} 1
kubernetes_feature_enabled{name="CronJobTimeZone",stage="BETA"} 1
kubernetes_feature_enabled{name="CustomCPUCFSQuotaPeriod",stage="ALPHA"} 0
kubernetes_feature_enabled{name="CustomResourceValidationExpressions",stage="BETA"} 1
kubernetes_feature_enabled{name="DaemonSetUpdateSurge",stage=""} 1
kubernetes_feature_enabled{name="DelegateFSGroupToCSIDriver",stage="BETA"} 1
kubernetes_feature_enabled{name="DevicePlugins",stage="BETA"} 1
kubernetes_feature_enabled{name="DisableAcceleratorUsageMetrics",stage=""} 1
kubernetes_feature_enabled{name="DisableCloudProviders",stage="ALPHA"} 0
kubernetes_feature_enabled{name="DisableKubeletCloudCredentialProviders",stage="ALPHA"} 0
kubernetes_feature_enabled{name="DownwardAPIHugePages",stage="BETA"} 1
kubernetes_feature_enabled{name="DryRun",stage=""} 1
kubernetes_feature_enabled{name="DynamicKubeletConfig",stage="DEPRECATED"} 0
kubernetes_feature_enabled{name="EfficientWatchResumption",stage=""} 1
kubernetes_feature_enabled{name="EndpointSliceTerminatingCondition",stage="BETA"} 1
kubernetes_feature_enabled{name="EphemeralContainers",stage=""} 1
kubernetes_feature_enabled{name="ExecProbeTimeout",stage=""} 1
kubernetes_feature_enabled{name="ExpandCSIVolumes",stage=""} 1
kubernetes_feature_enabled{name="ExpandInUsePersistentVolumes",stage=""} 1
kubernetes_feature_enabled{name="ExpandPersistentVolumes",stage=""} 1
kubernetes_feature_enabled{name="ExpandedDNSConfig",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ExperimentalHostUserNamespaceDefaulting",stage="BETA"} 0
kubernetes_feature_enabled{name="GRPCContainerProbe",stage="BETA"} 1
kubernetes_feature_enabled{name="GracefulNodeShutdown",stage="BETA"} 1
kubernetes_feature_enabled{name="GracefulNodeShutdownBasedOnPodPriority",stage="BETA"} 1
kubernetes_feature_enabled{name="HPAContainerMetrics",stage="ALPHA"} 0
kubernetes_feature_enabled{name="HPAScaleToZero",stage="ALPHA"} 0
kubernetes_feature_enabled{name="HonorPVReclaimPolicy",stage="ALPHA"} 0
kubernetes_feature_enabled{name="IPTablesOwnershipCleanup",stage="ALPHA"} 0
kubernetes_feature_enabled{name="IdentifyPodOS",stage=""} 1
kubernetes_feature_enabled{name="InTreePluginAWSUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginAzureDiskUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginAzureFileUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginGCEUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginPortworxUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginRBDUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="InTreePluginvSphereUnregister",stage="ALPHA"} 0
kubernetes_feature_enabled{name="JobMutableNodeSchedulingDirectives",stage="BETA"} 1
kubernetes_feature_enabled{name="JobPodFailurePolicy",stage="ALPHA"} 0
kubernetes_feature_enabled{name="JobReadyPods",stage="BETA"} 1
kubernetes_feature_enabled{name="JobTrackingWithFinalizers",stage="BETA"} 1
kubernetes_feature_enabled{name="KMSv2",stage="ALPHA"} 0
kubernetes_feature_enabled{name="KubeletCredentialProviders",stage="BETA"} 1
kubernetes_feature_enabled{name="KubeletInUserNamespace",stage="ALPHA"} 0
kubernetes_feature_enabled{name="KubeletPodResources",stage="BETA"} 1
kubernetes_feature_enabled{name="KubeletPodResourcesGetAllocatable",stage="BETA"} 1
kubernetes_feature_enabled{name="KubeletTracing",stage="ALPHA"} 0
kubernetes_feature_enabled{name="LegacyServiceAccountTokenNoAutoGeneration",stage="BETA"} 1
kubernetes_feature_enabled{name="LocalStorageCapacityIsolation",stage=""} 1
kubernetes_feature_enabled{name="LocalStorageCapacityIsolationFSQuotaMonitoring",stage="ALPHA"} 0
kubernetes_feature_enabled{name="LogarithmicScaleDown",stage="BETA"} 1
kubernetes_feature_enabled{name="LoggingAlphaOptions",stage="ALPHA"} 0
kubernetes_feature_enabled{name="LoggingBetaOptions",stage="BETA"} 1
kubernetes_feature_enabled{name="MatchLabelKeysInPodTopologySpread",stage="ALPHA"} 0
kubernetes_feature_enabled{name="MaxUnavailableStatefulSet",stage="ALPHA"} 0
kubernetes_feature_enabled{name="MemoryManager",stage="BETA"} 1
kubernetes_feature_enabled{name="MemoryQoS",stage="ALPHA"} 0
kubernetes_feature_enabled{name="MinDomainsInPodTopologySpread",stage="BETA"} 0
kubernetes_feature_enabled{name="MixedProtocolLBService",stage="BETA"} 1
kubernetes_feature_enabled{name="MultiCIDRRangeAllocator",stage="ALPHA"} 0
kubernetes_feature_enabled{name="NetworkPolicyEndPort",stage=""} 1
kubernetes_feature_enabled{name="NetworkPolicyStatus",stage="ALPHA"} 0
kubernetes_feature_enabled{name="NodeInclusionPolicyInPodTopologySpread",stage="ALPHA"} 0
kubernetes_feature_enabled{name="NodeOutOfServiceVolumeDetach",stage="ALPHA"} 0
kubernetes_feature_enabled{name="NodeSwap",stage="ALPHA"} 0
kubernetes_feature_enabled{name="OpenAPIEnums",stage="BETA"} 1
kubernetes_feature_enabled{name="OpenAPIV3",stage="BETA"} 1
kubernetes_feature_enabled{name="PodAndContainerStatsFromCRI",stage="ALPHA"} 0
kubernetes_feature_enabled{name="PodDeletionCost",stage="BETA"} 1
kubernetes_feature_enabled{name="PodDisruptionConditions",stage="ALPHA"} 0
kubernetes_feature_enabled{name="PodHasNetworkCondition",stage="ALPHA"} 0
kubernetes_feature_enabled{name="PodSecurity",stage=""} 1
kubernetes_feature_enabled{name="ProbeTerminationGracePeriod",stage="BETA"} 1
kubernetes_feature_enabled{name="ProcMountType",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ProxyTerminatingEndpoints",stage="ALPHA"} 0
kubernetes_feature_enabled{name="QOSReserved",stage="ALPHA"} 0
kubernetes_feature_enabled{name="ReadWriteOncePod",stage="ALPHA"} 0
kubernetes_feature_enabled{name="RecoverVolumeExpansionFailure",stage="ALPHA"} 0
kubernetes_feature_enabled{name="RemainingItemCount",stage="BETA"} 1
kubernetes_feature_enabled{name="RemoveSelfLink",stage=""} 1
kubernetes_feature_enabled{name="RetroactiveDefaultStorageClass",stage="ALPHA"} 0
kubernetes_feature_enabled{name="RotateKubeletServerCertificate",stage="BETA"} 1
kubernetes_feature_enabled{name="SELinuxMountReadWriteOncePod",stage="ALPHA"} 0
kubernetes_feature_enabled{name="SeccompDefault",stage="BETA"} 1
kubernetes_feature_enabled{name="ServerSideApply",stage=""} 1
kubernetes_feature_enabled{name="ServerSideFieldValidation",stage="BETA"} 1
kubernetes_feature_enabled{name="ServiceIPStaticSubrange",stage="BETA"} 1
kubernetes_feature_enabled{name="ServiceInternalTrafficPolicy",stage="BETA"} 1
kubernetes_feature_enabled{name="SizeMemoryBackedVolumes",stage="BETA"} 1
kubernetes_feature_enabled{name="StatefulSetAutoDeletePVC",stage="ALPHA"} 0
kubernetes_feature_enabled{name="StatefulSetMinReadySeconds",stage=""} 1
kubernetes_feature_enabled{name="StorageVersionAPI",stage="ALPHA"} 0
kubernetes_feature_enabled{name="StorageVersionHash",stage="BETA"} 1
kubernetes_feature_enabled{name="TopologyAwareHints",stage="BETA"} 1
kubernetes_feature_enabled{name="TopologyManager",stage="BETA"} 1
kubernetes_feature_enabled{name="UserNamespacesStatelessPodsSupport",stage="ALPHA"} 0
kubernetes_feature_enabled{name="VolumeCapacityPriority",stage="ALPHA"} 0
kubernetes_feature_enabled{name="WatchBookmark",stage=""} 1
kubernetes_feature_enabled{name="WinDSR",stage="ALPHA"} 0
kubernetes_feature_enabled{name="WinOverlay",stage="BETA"} 1
kubernetes_feature_enabled{name="WindowsHostProcessContainers",stage="BETA"} 1


以上が v1.26 で SIG Instrumentation が扱う主要なテーマとなります。次は SIG Instrumentation に関連する変更点についてピックアップしたものを紹介します。

メトリクスの追加

kube-apiserver

  • APF(Priority and Fairness) に _borrowing_ という新しい機能が導入され、API Priority Level が他の Priority Level からシート数を借用できるようになりました。クラスタのオペレーターは、指定された Priority Level の .spec.limited フィールド配下に新しく導入された 2 つのフィールド lendablePercentborrowingLimitPercent を利用して、特定の PriorityLevelConfiguration オブジェクトを借用できます。この機能の導入により以下のメトリクスが追加されました。また借用の可能性があるため、既存メトリクスである apiserver_flowcontrol_request_concurrency_limit は、設定された同時実行数の制限と強制された同時実行数の制限の両方ではなく、設定された同時実行数のみを記録します(#113485, @￰MikeSpreitzer)。
    • apiserver_flowcontrol_nominal_limit_seats: Nominal number of execution seats configured for each priority level
    • apiserver_flowcontrol_lower_limit_seats: Configured lower bound on number of execution seats available to each priority level
    • apiserver_flowcontrol_upper_limit_seats: Configured upper bound on number of execution seats available to each priority level
    • apiserver_flowcontrol_demand_seats: Observations, at the end of every nanosecond, of (the number of seats each priority level could use) / (nominal number of seats for that level)
    • apiserver_flowcontrol_demand_seats_high_watermark: High watermark, over last adjustment period, of demand_seats
    • apiserver_flowcontrol_demand_seats_average: Time-weighted average, over last adjustment period, of demand_seats
    • apiserver_flowcontrol_demand_seats_stdev: Time-weighted standard deviation, over last adjustment period, of demand_seats
    • apiserver_flowcontrol_demand_seats_smoothed: Smoothed seat demands
    • apiserver_flowcontrol_target_seats: Seat allocation targets
    • apiserver_flowcontrol_seat_fair_frac: Fair fraction of server's concurrency to allocate to each priority level that can use it
    • apiserver_flowcontrol_current_limit_seats: current derived number of execution seats available to each priority level

kubelet

  • Pod ステータスの変更が検出されてから、その Pod が正常に更新されるまでの時間を記録するメトリクスが追加されました(#107896, @￰smarterclayton)
    • Histogram: pod_status_sync_duration_seconds
      • Labels: None
  • CPU コアの専有(ピンニング) 割当数と失敗数を記録するメトリクスが追加されました(#112855, @￰fromanirh)
    • Counter: kubelet_cpu_manager_pinning_requests_total
      • Labels: None
    • Counter: kubelet_cpu_manager_pinning_errors_total
      • Labels: None
  • 全てのコンテナが開始され watch で観測できるまでの、イメージ取得と Init コンテナの実行時間を除いた Pod 開始までの時間(秒単位)を記録するメトリクスが追加されました(#111930, @￰azylinski)
    • Histogram: kubelet_pod_start_sli_duration_seconds
      • Labels: None

kube-controller-manager

  • Finalizer に batch.kubernetes.io/job-tracking を持つ、フェーズが Failed、または Succeeded の Pod 数を記録します。ジョブステータスに計上した後に Pod の Finalizer が削除されているかどうかを監視するために使用できます(#113176, @￰alculquicondor)
    • Counter: job_controller_terminated_pods_tracking_finalizer_total
      • Labels: {"event"}
        • "add" or "delete"
  • Pod GC コントローラーに、強制的に削除された Pod 数と、強制的に削除する際に発生したエラー数を記録するメトリクスが追加されました(#113519, @￰xing-yang)
    • Counter: pod_gc_collector_force_delete_pods_total
      • Labels: None
    • Counter: pod_gc_collector_force_delete_pod_errors_total
      • Labels: None
  • podFailurePolicy で適用したアクション(FailJob|Ignore|Count)ごとに Pod Failure をカウントするメトリクスが追加されました(#113324, @￰mimowo)
    • Counter: job_controller_pod_failures_handled_by_failure_policy_total
      • Labels: {"action"}
  • RetroactiveDefaultStorageClass フィーチャーゲートのメトリクスが利用できるようになりました (#113323, @￰RomanBednar)
    • Counter: retroactive_storageclass_total
      • Labels: None
    • Counter: retroactive_storageclass_errors_total
      • Labels: None

kube-scheduler

  • kube-scheduler に goroutine を記録する以下のメトリクスが追加されました。既存の scheduler_scheduler_goroutines メトリクスより多くの場所で goroutine をカウントします(#112003, @￰sanposhiho)
    • Gauge: scheduler_goroutines
      • Labels: {"operation"}

その他

  • Kubernetes コンポーネントごとにアクティブなフィーチャーゲートの有効無効を記録するメトリクスが追加されました(#112690, @￰logicalhan) (#112652, @￰logicalhan)
    • Gauge: kubernetes_feature_enabled
      • Labels: {"name", "stage"}
  • Kubernetes メトリクスフレームワークメトリクスの Deprecated Version と Stability Level ごとにカウントするメトリクスが追加されました(#112907, @￰logicalhan)
    • Counter: registered_metric_total
      • Labels: {"stability_level", "deprecated_version"}
  • Go の ランタイムに関連するメトリクスが追加されました(#111910, @￰tosi3k)
    • go_gc_cycles_automatic_gc_cycles_total
    • go_gc_cycles_forced_gc_cycles_total
    • go_gc_cycles_total_gc_cycles_total
    • go_gc_heap_allocs_by_size_bytes
    • go_gc_heap_allocs_bytes_total
    • go_gc_heap_allocs_objects_total
    • go_gc_heap_frees_by_size_bytes
    • go_gc_heap_frees_bytes_total
    • go_gc_heap_frees_objects_total
    • go_gc_heap_goal_bytes
    • go_gc_heap_objects_objects
    • go_gc_heap_tiny_allocs_objects_total
    • go_gc_pauses_seconds
    • go_memory_classes_heap_free_bytes
    • go_memory_classes_heap_objects_bytes
    • go_memory_classes_heap_released_bytes
    • go_memory_classes_heap_stacks_bytes
    • go_memory_classes_heap_unused_bytes
    • go_memory_classes_metadata_mcache_free_bytes
    • go_memory_classes_metadata_mcache_inuse_bytes
    • go_memory_classes_metadata_mspan_free_bytes
    • go_memory_classes_metadata_mspan_inuse_bytes
    • go_memory_classes_metadata_other_bytes
    • go_memory_classes_os_stacks_bytes
    • go_memory_classes_other_bytes
    • go_memory_classes_profiling_buckets_bytes
    • go_memory_classes_total_bytes
    • go_sched_goroutines_goroutines
    • go_sched_latencies_seconds

メトリクスの変更

kube-apiserver

  • 以下のメトリクスがリネームされました(#113310, @￰logicalhan)
    • etcd_db_total_size_in_bytes => apiserver_storage_db_total_size_in_bytes

kube-controller-manager

  • 以下のメトリクスに reason ラベルが追加されました(#113324, @￰mimowo)
    • Counter: job_controller_job_finished_total
      • Labels: {"completion_mode", "reason", "result"}
  • 以下のメトリクスがリネームされ、Stability Level が Stable になりました(#113008, @￰soltysh)
    • cronjob_controller_cronjob_job_creation_skew => cronjob_controller_cronjob_job_creation_skew_duration_seconds
  • 以下のメトリクスがリネームされ、Stability Level が Stable になりました(#113010, @￰soltysh)
    • job_controller_job_sync_total -> job_controller_job_syncs_total
    • job_controller_job_finished_total -> job_controller_jobs_finished_total

kubelet

  • 以下のメトリクスがリネームされました(#113754, @￰logicalhan)
    • kubelet_kubelet_credential_provider_plugin_duration => kubelet_credential_provider_plugin_duration
    • kubelet_kubelet_credential_provider_plugin_errors => kubelet_credential_provider_plugin_errors

kube-scheduler

  • scheduler_preemption_victims メトリクスのバケットが LinearBuckets から ExponentialBuckets に変更となりました(#112939, @￰lengrongfu)

メトリクスの非推奨

kube-apiserver

  • apiserver_request_slo_duration_seconds メトリクスは v1.27 で非推奨となる予定です。一定の命名規則に従うため追加された apiserver_request_sli_duration_seconds メトリクスを利用してください(#112679, @￰dgrisonnet)

kube-scheduler

  • scheduler_scheduler_goroutine は非推奨となりました。代わりに scheduler_goroutine メトリクスを利用してください(#112003, @￰sanposhiho)

メトリクスの削除

なし。

メトリクスの修正

kube-apiserver

  • DeleteCollection 時に正しい verb(delete_collection) で記録されるように修正されました(#113133, @￰sxllwx)
  • etcd_request_duration_secondsetcd_bookmark_counts メトリクスは、オブジェクトタイプではなく GroupResource で区別するようになりました。これまで *unstructured.Unstructured ですべてグループ化していましたが、CustomResourceDefinition ごとに記録されるようになりました(#112042, @￰ncdc)

kube-controller-manager

  • job_finished_total メトリクスが二重にカウントされていた不具合を修正しました(#112948, @￰mimowo)

kube-scheduler

  • scheduler_scheduling_attempt_duration_seconds メトリクスが正しく記録されるように修正されました(#113113, @￰kerthcet)

そのほか

  • ラベルのカーディナリティが高くなることを避けるために、client-go のレイテンシーメトリクスが記録されないようにするリグレッションを元に戻しました(#111752, @￰aanm)
  • API Server Tracing に新しい Span および Span Event が追加されました(#113172, @￰dashpole)
  • API Server Tracing で認可の待ち時間、APF、なりすまし、監査、認証フィルタのレイテンシーがトラックされるようになりました(#113217, @￰dashpole)
  • API Server Tracing で Root Span 名(opentelemetry) を KubernetesAPI から HTTP GET に変更しました(#112545, @￰dims)
  • PodAndContainerStatsFromCRI フィーチャーゲートが有効で CRI で Stats を実装していればその Stats を利用するように修正しました(#113291, @￰mengjiao-liu)
  • Watch のキャッシュのログメッセージとメトリクスは、Go の構造体型ではなく <resource>.<group> をキーにするようになりました。例えば *v1.Pod の場合、pods のようになります。さらに CustomResourceDefinitions の場合、 *unstructured.Unstructured ではなく、正しいリソースとグループとして記録されます(#111807, @￰ncdc)
  • klog.V(0).InfoS の代わりに klog.InfoS を使用するように修正しました。kubernetes-sigs/logtools#2 で述べられているように、パラメータとしてゼロを指定して V を呼び出すと無駄なオーバーヘッドが生じます(#111708, @￰yangjunmyfm192085)
6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0