Kubernetes 1.26 SIG Instrumentation 的改动细节
-
- Kubernetes 1.24 SIG Instrumentation の変更内容
- Kubernetes 1.25 SIG Instrumentation の変更内容
首先
在这篇文章中,我们总结了来自Kubernetes 1.26的CHANGELOG中有关度量指标变化以及SIG Instrumentation的工作。
在 Kubernetes v1.26 中,SIG Instrumentation 处理的主要议题之一是改善 Kubernetes 的指标。这次改进包含了一些值得关注的内容。接下来我们将对这些内容进行确认。
指标稳定性框架的扩展
Metrics Stability Framework の拡張が 導入(Alpha) されました。
- KEP 3498-extending-stability
v1.25 までの Stability Level は ALPHA と STABLE のみでしたが、v1.26 では INTERNAL と BETA が追加されました。
// 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"
)
稳定性级别是Kubernetes独特的指标框架。Prometheus指标的帮助文本以格式为# HELP xxxxx [ALPHA] xxxx的形式记录。指标稳定性框架本身在Kubernetes v1.17中为Beta版本,在v1.21中成为稳定版本。
メトリクスのヘルプテキストの例
# 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
如果查看Kubernetes执行计划(KEP),可以发现INTERNAL是供内部开发使用的,意味着可以在任何版本中随意删除,所以建议Kubernetes使用者(Kubernetes管理员/应用开发者)应该避免使用它。
BETA 是介於 ALPHA 和 STABLE 之間的穩定性。從動機來看,重點在於強調 ALPHA 是更早期的指標,而將之前的 ALPHA 相當程度的穩定性視為 BETA。
ALPHA与BETA的稳定性水平将与功能门限的阶段一样,定期决定并强制进行升级或标记为弃用。在Alpha阶段,它将被标记为未实施,在Beta阶段将被计划为实施。
此次发布还公开了包含稳定级别和标签的指标文档。此文档是通过代码自动生成的。由于 Kubernetes 的 Changelog 无法避免遗漏,所以我计划从下一个版本起将自动生成的指标文档与其进行对比,然后撰写度量衡的文章。
Kubernetes 组件的服务水平指示器(SLI)度量
Kubernetes コンポーネントの Service Level Indicator (SLI) メトリクスが導入(Alpha)されました。
ComponentSLIs フィーチャーゲートを有効にすると、ヘルスチェックのデータからメトリクスに変換された Service Level Objectives(SLO) を算出できるメトリクスのエンドポイント /metrics/slis が利用できるようになります。
-
- KEP 3466-kubernetes-component-health-slis
- Kubernetes Component SLI Metrics
実際に ComponentSLIs フィーチャーゲートを有効にして /metrics/slis エンドポイントにアクセスすると Cauge: kubernetes_healthcheck と Counter: kubernetes_healthchecks_total の 2 つのメトリクスが取得できます。
# 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
提供Feature Gate Metrics.
现在可以使用“kubernetes_feature_enabled”指标来确认Kubernetes每个组件的功能门是否启用。
# 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
新增指標
kube-apiserver: Kubernetes API 服务端
-
- APF(Priority and Fairness) に _borrowing_ という新しい機能が導入され、API Priority Level が他の Priority Level からシート数を借用できるようになりました。クラスタのオペレーターは、指定された Priority Level の .spec.limited フィールド配下に新しく導入された 2 つのフィールド lendablePercent と borrowingLimitPercent を利用して、特定の 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 控制器管理器
-
- 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调度器
-
- 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
指标的变更 de
kube-apiserver
-
- 以下のメトリクスがリネームされました(#113310, @logicalhan)
etcd_db_total_size_in_bytes => apiserver_storage_db_total_size_in_bytes
Kube控制器管理器
-
- 以下のメトリクスに 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_preemption_victims メトリクスのバケットが LinearBuckets から ExponentialBuckets に変更となりました(#112939, @lengrongfu)
度量衡已被建议停用
kube-apiserver
apiserver_request_slo_duration_seconds メトリクスは v1.27 で非推奨となる予定です。一定の命名規則に従うため追加された apiserver_request_sli_duration_seconds メトリクスを利用してください(#112679, @dgrisonnet)
Kubernetes调度器
scheduler_scheduler_goroutine は非推奨となりました。代わりに scheduler_goroutine メトリクスを利用してください(#112003, @sanposhiho)
删除度量标准
没有。
修正尺度
kube-apiserver => Kubernetes API服务器
- DeleteCollection 時に正しい verb(delete_collection) で記録されるように修正されました(#113133, @sxllwx)
etcd_request_duration_seconds と etcd_bookmark_counts メトリクスは、オブジェクトタイプではなく GroupResource で区別するようになりました。これまで *unstructured.Unstructured ですべてグループ化していましたが、CustomResourceDefinition ごとに記録されるようになりました(#112042, @ncdc)
Kubernetes 控制器管理器
job_finished_total メトリクスが二重にカウントされていた不具合を修正しました(#112948, @mimowo)
调度程序
scheduler_scheduling_attempt_duration_seconds メトリクスが正しく記録されるように修正されました(#113113, @kerthcet)
其他方面
ComponentSLIs フィーチャーゲートの導入
kubelet(#113030, @Richabanker)
kube-apiserver(#112884, @logicalhan) (#112741, @logicalhan)
kube-controller-manager(#112978, @logicalhan)
cloud-controller-manager(#113340, @Richabanker)
kube-proxy(#113057, @Richabanker)
- ラベルのカーディナリティが高くなることを避けるために、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)
-
- cAdvisor の代わりに CRI で コンテナと Pod のメトリクスを生成する Alpha サポートを追加しました(#113609, @haircommander)
KEP sig-node/2371-cri-pod-container-stats
PodAndContainerStatsFromCRI フィーチャーゲートが有効で CRI で Stats を実装していればその Stats を利用するように修正しました(#113291, @mengjiao-liu)
- cAdvisor を v0.46.0 に更新しました(#113769, @bobbypage)
- Watch のキャッシュのログメッセージとメトリクスは、Go の構造体型ではなく . をキーにするようになりました。例えば *v1.Pod の場合、pods のようになります。さらに CustomResourceDefinitions の場合、 *unstructured.Unstructured ではなく、正しいリソースとグループとして記録されます(#111807, @ncdc)
- klog.V(0).InfoS の代わりに klog.InfoS を使用するように修正しました。kubernetes-sigs/logtools#2 で述べられているように、パラメータとしてゼロを指定して V を呼び出すと無駄なオーバーヘッドが生じます(#111708, @yangjunmyfm192085)