成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何調整 Kubernetes 資源限制

云計算 云原生
我們假設你使用 Prometheus 來監控你的 Kubernetes 集群。這就是為什么本文中的每個步驟都使用 PromQL 查詢進行示例說明的原因。

Kubernetes 資源限制往往是一個難以調整的配置,因為你必須在太嚴格或者太寬松的限制之間找到最佳的平衡點。

通過本文,你可以學習到如何設置正確的 Kubernetes 資源限制:從檢測到無限制的容器,到找出你應該在集群中正確配置的 Kubernetes 資源限制。我們假設你使用 Prometheus 來監控你的 Kubernetes 集群。這就是為什么本文中的每個步驟都使用 PromQL 查詢進行示例說明的原因。

檢測沒有 Kubernetes 資源限制的容器

設置正確的 Kubernetes 資源限制的第一步是檢測沒有任何限制的容器。沒有 Kubernetes 資源限制的容器可能會在你的節點中造成非常嚴重的后果。在最好的情況下,節點將開始按順序或評分驅逐 pod。由于 CPU 節流,它們也會出現性能問題。在最壞的情況下,節點將由于內存不足而被終止。

查找沒有 Kubernetes 資源限制的容器

  • 根據命名空間查找沒有限制 CPU 的容器
sum by (namespace)(count by (namespace,pod,container)(kube_pod_container_info{container!=""}) unless sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="cpu"}))
  • 根據命名空間查找沒有限制內存的容器
sum by (namespace)(count by (namespace,pod,container)(kube_pod_container_info{container!=""}) unless sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="memory"}))

發現太多容器沒有 Kubernetes 資源限制?

也許你發現了很多沒有Kubernetes資源限制的容器?,F在讓我們關注最危險的。如何查看?很簡單,只需找到使用最多資源且沒有Kubernetes資源限制的前10個容器。

  • 使用最多CPU且沒有CPU限制的前10個容器
topk(10,sum by (namespace,pod,container)(rate(container_cpu_usage_seconds_total{container!=""}[5m])) unless sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="cpu"}))
  • 使用最多內存且沒有內存限制的前10個容器
topk(10,sum by (namespace,pod,container)(container_memory_usage_bytes{container!=""}) unless sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="memory"}))

檢測 Kubernetes 資源限制過于嚴格的容器

檢測 CPU 限制過于嚴格的容器

如果容器非常接近其 CPU 限制,在需要執行比平時更多的 CPU 操作時,由于 CPU 節流,它的性能會下降。

  • 使用此查詢查找 CPU 使用率接近其限制的容器:
(sum by (namespace,pod,container)(rate(container_cpu_usage_seconds_total{container!=""}[5m])) / sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="cpu"})) > 0.8

檢測內存限制過于嚴格的容器

如果容器接近其內存限制并超過了它,它將被終止。

這張圖表顯示了一個容器如何增加它的內存使用量,直到它達到限制并被終止。

  • 使用此查詢查找內存使用量接近其限制的容器:
(sum by (namespace,pod,container)(container_memory_usage_bytes{container!=""}) / sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="memory"})) > 0.8

如何設置正確的 Kubernetes 資源限制?

一種辦法是觀察一段時間我們想要限制的容器的資源使用情況。為此,我們需要把注意力集中在相同類型和工作負載的容器上(deployment, daemonset, statefulset等)。在這里,我們有兩種策略:

保守策略

我們將選擇每個時間段消耗最多的容器的值。如果我們將限制設置為該值,容器將不會耗盡資源。

  • 使用保守策略找到正確的 CPU 限制
max by (namespace,owner_name,container)((rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m])) * on(namespace,pod) group_left(owner_name) avg by (namespace,pod,owner_name)(kube_pod_owner{owner_kind=~"DaemonSet|StatefulSet|Deployment"}))

使用保守策略找到正確的內存限制

max by (namespace,owner_name,container)((container_memory_usage_bytes{container!="POD",container!=""}) * on(namespace,pod) group_left(owner_name) avg by (namespace,pod,owner_name)(kube_pod_owner{owner_kind=~"DaemonSet|StatefulSet|Deployment"}))

激進策略

我們將選擇99分位數作為限制。這將排除掉那1%超出限制的值。如果存在你不想要的偶發異?;蚍逯?,這是一個很好的策略。

  • 使用激進的策略找到正確的 CPU 限制
quantile by (namespace,owner_name,container)(0.99,(rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m])) * on(namespace,pod) group_left(owner_name) avg by (namespace,pod,owner_name)(kube_pod_owner{owner_kind=~"DaemonSet|StatefulSet|Deployment"}))

使用激進的策略找到正確的內存限制

quantile by (namespace,owner_name,container)(0.99,(container_memory_usage_bytes{container!="POD",container!=""}) * on(namespace,pod) group_left(owner_name) avg by (namespace,pod,owner_name)(kube_pod_owner{owner_kind=~"DaemonSet|StatefulSet|Deployment"}))

集群有足夠的容量嗎?

在 Kubernetes 中,節點根據每個 pod 的容器請求來確保其中調度的 pod 有足夠的資源。這也意味著節點承諾為每個容器提供在其限制范圍內設置的 CPU 和內存量。

討論限制非常寬松的容器與討論限制過量使用是一樣的。當所有 Kubernetes 資源限制的總和大于該資源的容量時,就會發生這種情況。

當您在集群中過量使用資源時,一切都可能在正常情況下完美運行,但在高負載情況下,容器可能會開始消耗 CPU 和內存并達到其限制值。這將導致節點開始執行 pod eviction,并且在非常緊急的情況下,由于集群中可用資源的匱乏,節點將被終止。

查找集群的過量使用情況

我們可以通過以下方式檢查集群在內存和 CPU 上的過量使用百分比:

  • 集群內存過量使用百分比
100 * sum(kube_pod_container_resource_limits{container!="",resource="memory"} ) / sum(kube_node_status_capacity_memory_bytes)
  • 集群 CPU 過量使用百分比
100 * sum(kube_pod_container_resource_limits{container!="",resource="cpu"} ) / sum(kube_node_status_capacity_cpu_cores)

通常,并非所有容器都會同時消耗所有資源,因此從資源的角度來看,100% 的過量使用是理想的。另一方面,這將會為那些永遠不會使用到的基礎設施付出額外的成本。

為了更好地調整集群的容量,你可以選擇保守策略,確保過量使用低于 125%,或者如果讓過量使用達到集群容量的 150%,則選擇激進策略。

查找節點的過量使用情況

檢查每個節點的過量使用也很重要。節點過度使用的一個示例是一個pod請求為2個CPU,但是限制卻為8個CPU。該 pod 可以在具有 4 個核心的節點中調度,但由于 pod 有 8 個核心作為限制,該節點中的過度使用將為 8 – 4 = 4 個核心。

  • 節點內存過量使用百分比
sum by (node)(kube_pod_container_resource_limits{container!=””,resource=”memory”} ) / sum by (node)(kube_node_status_capacity_memory_bytes)
  • 節點 CPU 過量使用百分比
sum by (node)(kube_pod_container_resource_limits{container!=””,resource=”memory”} ) / sum by (node)(kube_node_status_capacity_memory_bytes)

正確調整資源限制后的最終效果

*原文:https://sysdig.com/blog/kubernetes-resource-limits/*本文部分圖片來源于網絡,如有侵權請聯系刪除

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2020-07-31 07:00:00

Kubernetes容器Linux

2022-12-19 07:28:53

Kubernetes資源請求限制

2022-06-21 08:03:49

RBAC 限制容器

2020-11-23 08:48:00

Kubernetes容器開發

2021-05-25 09:00:00

Kubernetes容器集群

2025-06-11 09:28:22

2024-11-14 08:00:00

2024-04-07 00:00:00

Linux控制資源

2020-09-09 07:00:00

Kubernetes集群容器

2018-12-18 09:00:26

Kubernetes工作負載測試

2024-01-01 18:59:15

KubernetesCPU內存

2013-08-14 09:42:40

虛擬硬盤硬盤大小限制

2019-01-03 15:10:40

JVM安全資源

2021-01-12 15:19:23

Kubernetes

2022-06-27 10:25:55

Kubernetes調度CPU

2018-11-23 21:01:03

RancherKubernetes金風

2016-10-08 12:46:08

Linux監控限制

2021-03-05 00:06:12

Docker容器內存

2021-11-22 16:21:28

Kubernetes 運維開源

2021-07-29 06:37:55

KubernetesKubeLinter工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91 在线播放 | 精品久久久精品 | 中文字幕综合在线 | www.788.com色淫免费 | 日韩在线 | 国产精品成人一区 | 国精日本亚洲欧州国产中文久久 | 亚洲欧美一区在线 | 久久偷人 | 一区二区视频在线 | 99久久精品一区二区毛片吞精 | 无码一区二区三区视频 | 久久99精品久久久久久国产越南 | 国产精品永久免费 | 色久影院 | 日韩国产中文字幕 | 中文字幕日韩欧美 | 在线久草 | 色爱综合网 | 国产黄色av网站 | 欧美日韩18 | .国产精品成人自产拍在线观看6 | 国产精品成人在线 | 99在线免费视频 | 成人午夜精品 | 午夜在线小视频 | 国产成人精品一区二区三区视频 | 亚洲国产中文字幕 | 国产91在线 | 欧美 | 国产精品久久久亚洲 | 欧美电影免费网站 | 欧美一区二区三区在线观看视频 | 高清18麻豆 | 日本精品久久 | 亚洲国产成人在线视频 | 精品国产乱码久久久久久丨区2区 | 黑人精品 | 国产精品高潮呻吟久久av黑人 | 91九色在线观看 | 密色视频| 亚洲精品在 |