跳至主要内容

資源指標計算

Harvester 使用從系統動態收集的資料來計算資源指標。首先計算主機級別的資源指標,然後聚合以獲得叢集級別的指標。

您可以在 Harvester UI 上檢視資源相關的指標。

  • Hosts(主機)畫面:顯示主機級別的指標

    主機級別資源指標

  • Dashboard(儀表板)畫面:顯示叢集級別的指標

    叢集級別資源指標

CPU 和記憶體​

以下章節描述 CPU 和記憶體資源的資料來源和計算方法。

  • 資源容量:基準資料
  • 資源使用量:Hosts 畫面上 Used(已使用)欄位的資料來源
  • 資源預留:Hosts 畫面上 Reserved(已預留)欄位的資料來源

資源容量​

在 Kubernetes 中,會為每個主機建立一個 Node 物件。.status.allocatable.cpu 和 .status.allocatable.memory 表示主機的可用 CPU 和記憶體資源。

範例:

# kubectl get nodes -A -oyaml
apiVersion: v1
items:
- apiVersion: v1
kind: Node
metadata:
..
management.cattle.io/pod-limits: '{"cpu":"12715m","devices.kubevirt.io/kvm":"1","devices.kubevirt.io/tun":"1","devices.kubevirt.io/vhost-net":"1","memory":"17104951040"}'
management.cattle.io/pod-requests: '{"cpu":"5657m","devices.kubevirt.io/kvm":"1","devices.kubevirt.io/tun":"1","devices.kubevirt.io/vhost-net":"1","ephemeral-storage":"50M","memory":"9155862208","pods":"78"}'
node.alpha.kubernetes.io/ttl: "0"
..
name: harv41
resourceVersion: "2170215"
uid: b6f5850a-2fbc-4aef-8fbe-121dfb671b67
spec:
podCIDR: 10.52.0.0/24
podCIDRs:
- 10.52.0.0/24
providerID: rke2://harv41
status:
addresses:
- address: 192.168.122.141
type: InternalIP
- address: harv41
type: Hostname
allocatable:
cpu: "10"
devices.kubevirt.io/kvm: 1k
devices.kubevirt.io/tun: 1k
devices.kubevirt.io/vhost-net: 1k
ephemeral-storage: "149527126718"
hugepages-1Gi: "0"
hugepages-2Mi: "0"
memory: 20464216Ki
pods: "200"
capacity:
cpu: "10"
devices.kubevirt.io/kvm: 1k
devices.kubevirt.io/tun: 1k
devices.kubevirt.io/vhost-net: 1k
ephemeral-storage: 153707984Ki
hugepages-1Gi: "0"
hugepages-2Mi: "0"
memory: 20464216Ki
pods: "200"

資源使用量​

CPU 和記憶體使用量資料會持續收集並儲存在 NodeMetrics 物件中。Harvester 從 usage.cpu 和 usage.memory 讀取資料。

範例:

# kubectl get NodeMetrics -A -oyaml
apiVersion: v1
items:
- apiVersion: metrics.k8s.io/v1beta1
kind: NodeMetrics
metadata:
...
name: harv41
timestamp: "2024-01-23T12:04:44Z"
usage:
cpu: 891736742n
memory: 9845008Ki
window: 10.149s

資源預留​

Harvester 動態計算主機上執行的所有 pod 的資源限制和請求,並將資訊更新到 NodeMetrics 物件的註解中。

範例:

      management.cattle.io/pod-limits: '{"cpu":"12715m",...,"memory":"17104951040"}'
management.cattle.io/pod-requests: '{"cpu":"5657m",...,"memory":"9155862208"}'

有關更多資訊,請參閱 Kubernetes 文件中的 Requests and Limits。

儲存​

Longhorn 是 Harvester 的預設容器儲存介面(CSI)驅動程式,提供分散式區塊儲存和分層等儲存管理功能。

Longhorn 中的預留儲存​

Longhorn 允許您指定每個新 Longhorn 節點上未分配給預設磁碟的磁碟空間百分比。預設值為「30」。有關更多資訊,請參閱 Longhorn 文件中的 Storage Reserved Percentage For Default Disk。

根據磁碟大小,您可以使用嵌入式 Longhorn UI 修改預設值。

資料來源和計算​

Harvester 使用以下資料來計算儲存資源的指標。

  • 所有磁碟的 storageMaximum 值總和(status.diskStatus.disk-name):總儲存容量
  • 所有磁碟的 storageAvailable 值總和(status.diskStatus.disk-name):Hosts 畫面上 Used 欄位的資料來源
  • 所有磁碟的 storageReserved 值總和(spec.disks):Hosts 畫面上 Reserved 欄位的資料來源

範例:

# kubectl get nodes.longhorn.io -n longhorn-system -oyaml
apiVersion: v1
items:
- apiVersion: longhorn.io/v1beta2
kind: Node
metadata:
..
name: harv41
namespace: longhorn-system
..
spec:
allowScheduling: true
disks:
default-disk-ef11a18c36b01132:
allowScheduling: true
diskType: filesystem
evictionRequested: false
path: /var/lib/harvester/defaultdisk
storageReserved: 24220101427
tags: []
..
status:
..
diskStatus:
default-disk-ef11a18c36b01132:
..
diskType: filesystem
diskUUID: d2788933-8817-44c6-b688-dee414cc1f73
scheduledReplica:
pvc-95561210-c39c-4c2e-ac9a-4a9bd72b3100-r-20affeca: 2147483648
pvc-9e83b2dc-6a4b-4499-ba70-70dc25b2d9aa-r-4ad05c86: 32212254720
pvc-bc25be1e-ca4e-4818-a16d-48353a0f2f96-r-c7b88c60: 3221225472
pvc-d9d3e54d-8d67-4740-861e-6373f670f1e4-r-f4c7c338: 2147483648
pvc-e954b5fe-bbd7-4d44-9866-6ff6684d5708-r-ba6b87b6: 5368709120
storageAvailable: 77699481600
storageMaximum: 80733671424
storageScheduled: 45097156608
region: ""
snapshotCheckStatus: {}
zone: ""