為k8s叢集的節點預留計算資源
一、問題
二、方案細節
2.1 預留計算公式
Node Capacity
---------------------------
| kube-reserved |
|-------------------------|
| system-reserved |
|-------------------------|
| eviction-threshold |
|-------------------------|
| |
| allocatable |
| (available for pods) |
| |
| |
---------------------------
NodeAllocatable = [NodeCapacity] - [kube-reserved] - [system-reserved] - [eviction-threshold]
- Node Capacity:Node的所有硬體資源
- kube-reserved:給kube元件預留的資源
- system-reserved:給System程序預留的資源
- eviction-threshold:kubelet eviction的閾值設定
- Allocatable:真正scheduler排程Pod時的參考值(保證Node上所有Pods的request resource不超過Allocatable)
2.2 kubelet新增額外啟動引數
--enforce-node-allocatable=pods,kube-reserved,system-reserved
--kube-reserved-cgroup=/system.slice/kubelet.service
--system-reserved-cgroup=/system.slice
--kube-reserved=cpu=200m,memory=250Mi
--system-reserved=cpu=200m,memory=250Mi
--eviction-hard=memory.available<5%,nodefs.available< 10%,imagefs.available<10%
--eviction-soft=memory.available<10%,nodefs.available<15%,imagefs.available<15%
--eviction-soft-grace-period=memory.available=2m,nodefs.available=2m,imagefs.available=2m
--eviction-max-pod-grace-period=30
--eviction-minimum-reclaim=memory.available=0Mi,nodefs.available=500Mi,imagefs.available=500Mi
(1)開啟為kube元件和系統守護程序預留資源的功能
--enforce-node-allocatable=pods,kube-reserved,system-reserved
(2)設定k8s元件的cgroup
--kube-reserved-cgroup=/system.slice/kubelet.service
(3)設定系統守護程序的cgroup
--system-reserved-cgroup=/system.slice
(4)配置為k8s元件預留資源的大小,CPU、Mem。(ephemeral storage是a’lpha特性,需要kubelet開啟feature-gates,預留的是臨時儲存空間(log,EmptyDir),生產環境建議先不使用)
--kube-reserved=cpu=200m,memory=250Mi
(5)配置為系統守護程序預留資源的大小(預留的值需要根據機器上容器的密度做一個合理的值)
--system-reserved=cpu=200m,memory=250Mi
當系統記憶體不足時,就有可能觸發系統 OOM,這時候根據 oom score 來確定優先殺死哪個程序,而 oom_score_adj 又是影響 oom score 的重要引數,其值越低,表示 oom 的優先順序越低。在計算節點中,程序的 oom_score_adj 如下:
sshd 等 | K8S 管理程序 | guarantee pod | 其它程序 | best effort pod | |
---|---|---|---|---|---|
具體程序 | sshd/dmevented / systemd-udevd | kubelet / docker / journalctl | guarantee pod | 核心 init 程序等 | best effort pod |
oom_score_adj | -1000 | -999 | -998 | 0 | 大於0 |
所以,很大概率上,OOM 的優先順序如下:
best effort pod > 其它程序 > guarantee pod > kubelet/docker 等 > sshd 等。
如果節點沒有 best effort 型別的 pod,那麼其它程序就有可能被 OOM,包括系統程序等。
(6)驅逐pod的配置:硬閾值(保證95%的記憶體利用率)
--eviction-hard=memory.available<5%,nodefs.available<10%,imagefs.available<10%
(7)驅逐pod的配置:軟閾值
--eviction-soft=memory.available<10%,nodefs.available<15%,imagefs.available<15%
(8)定義達到軟閾值之後,持續時間超過多久才進行驅逐
--eviction-soft-grace-period=memory.available=2m,nodefs.available=2m,imagefs.available=2m
(9)驅逐pod前最大等待時間=min(pod.Spec.TerminationGracePeriodSeconds, eviction-max-pod-grace-period),單位秒
--eviction-max-pod-grace-period=30
(10)至少回收
--eviction-minimum-reclaim=memory.available=0Mi,nodefs.available=500Mi,imagefs.available=500Mi
2.3 新增cgroup subsystem
在Kubernetes 1.8版本,kubelet啟動會檢查以下cgroup subsystem的存在:cpu、cpuacct、cpuset、memory、systemd。所以需要確保這些cgroup目錄的存在。
mkdir -p /sys/fs/cgroup/cpu/system.slice/kubelet.service
mkdir -p /sys/fs/cgroup/cpuacct/system.slice/kubelet.service
mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service
mkdir -p /sys/fs/cgroup/memory/system.slice/kubelet.service
mkdir -p /sys/fs/cgroup/systemd/system.slice/kubelet.service
三、Ref
相關推薦
為k8s叢集的節點預留計算資源
一、問題 二、方案細節 2.1 預留計算公式 Node Capacity --------------------------- | kube-reserved | |--------------------
為K8S叢集建立只讀許可權帳號
參考URL: https://www.jianshu.com/p/a1a0d64f1245 https://mritd.me/2018/03/20/use-rbac-to-control-kubectl-permissions/ https://studygolang.com/articles/1173
通過Heketi管理GlusterFS為K8S叢集提供持久化儲存
參考文件: Github project:https://github.com/heketi/heketi MA
K8s 叢集節點線上率達到 99.9% 以上,擴容效率提升 50%,我們做了這 3 個深度改造
點選下載《不一樣的 雙11 技術:阿里巴巴經濟體雲原生實踐》 本文節選自《不一樣的 雙11 技術:阿里巴巴經濟體雲原生實踐》一書,點選上方圖片即可下載! 作者 | 張振(守辰)阿里云云原生應用平臺高階技術專家 導讀:2019 年阿里巴巴核心系統 100% 以雲原生方式上雲,完美地支撐了 雙11 大促。這
利用容器逃逸實現遠端登入k8s叢集節點
某天, 某魚說要吃瞄, 於是...... 李國寶:邊緣計算k8s叢集SuperEdge初體驗 zhuanlan.zhihu.com 圖示 照著上一篇文章來說,我這邊邊緣計算叢集有一堆節點。 每個節點都在不同的網路環境下。 他們的共同點都是可以訪問內網, 部分是某雲學生主機, 部分是跑在家
為k8s預留系統資源
為k8s預留系統資源 Kubernetes 的節點可以按照 Capacity 排程。預設情況下 pod 能夠使用節點全部可用容量。 這是個問題,因為節點自己通常運行了不少驅動 OS 和 Kubernetes 的系統守護程序。 除非為這些系統守護程序留出資源,否則它們將與 pod 爭奪資源並
在單機上使用Kubeadm-dind 部署多節點k8s叢集
近幾年Google的Kubernetes(簡稱k8s)已經成為分散式容器編排和管理領域事實上的標準,在基於容器的微服務架構下的分散式應用開發、部署和運維管理等領域,會有越來越多的使用者部署和使用k8s平臺。對於初學著來說,部署一個多機k8s叢集一來缺少環境、另
K8s叢集部署(二)------ Master節點部署
Master節點要部署三個服務:API Server、Scheduler、Controller Manager。 apiserver提供叢集管理的REST API介面,包括認證授權、資料校驗以 及叢集狀態變更等 只有API Server才直接操作etcd 其他模組通過API Server查詢
【從零開始/親測國內外均可】基於阿里雲Ubuntu的kubernetes(k8s)主從節點分散式叢集搭建——分步詳細攻略v1.11.3【準備工作篇】
從零開始搭建k8s叢集——香港節點無牆篇【大陸節點有牆的安裝方法我會在每一步操作的時候提醒大家的注意,並告訴大家如何操作】 由於容器技術的火爆,現在使用K8s開展服務變得越來越廣泛了。 本攻略是基於阿里雲主機搭建的一個單主節點和單從節點的最簡k8s分散式叢集。 為了製作
搭建單節點(一個master和一個minion、k8s叢集)多pod實驗環境
一、環境描述 (1)兩個node,一個master和一個minion,其中master節點的ip是192.168.110.151,minion的ip是192.168.110.152 (2)其中151的機器上啟動私有registry,提供k8s叢集所需要的image (3)m
3、k8s叢集手動部署筆記之Etcd配置-master節點配置
k8s部署配置檔案統一存放位置: #k8s配置目錄建立bin(存放可執行檔案),cfg(存放配置檔案),ssl(存放證書)目錄 [root@master ~]# mkdir -p /opt/kubernetes/{bin,cfg,ssl} Etcd配
使用Kubeadm建立k8s叢集之節點部署(三十一)
前言 本篇部署教程將講述k8s叢集的節點(master和工作節點)部署,請先按照上一篇教程完成節點的準備。本篇教程中的操作全部使用指令碼完成,並且對於某些情況(比如映象拉取問題)還提供了多種解決方案。不過基於部署環境和k8s的複雜性,我們需
hyper-v虛擬機器上的centos多節點k8s叢集實踐
之前體驗了minikube,掉深坑裡至今還沒有爬出來,玩單節點用minikube夠了, 但傻瓜試的安裝讓人對k8s理解不是很深刻(坑),而且多節點好像有什麼奇怪的問題 所以我這次要用兩個虛擬機器來模擬k8s叢集 一主節點一工作節點 hostname ipa
使用Rancher Server部署本地多節點K8S叢集
當我第一次開始我的Kubernetes之旅時,我一直在尋找一種設定本地部署環境的方式。很多人常常會使用minikube或microk8s,這兩者非常適合新手在單節點叢集環境下進行操作。但當我已經瞭解了基礎知識之後,這兩者顯然不太夠用,我需要進一步尋找能夠執行本地多節點叢集、與生產環境更相似的平臺。為此,我查閱
僅需60秒,使用k3s建立一個多節點K8S叢集!
作者: Dawid Ziolkowski丨Container Solution雲原生工程師 最近,我一直在Kubernetes上進行各種測試和部署。因此,我不得不一次又一次建立和銷燬Kubernetes叢集,有的時候甚至在一個小時內執行好幾次。但由於我需要測試的某個事項需要一個全新的叢集,所以簡單地刪除所
【K8S】基於單Master節點安裝K8S叢集
## 寫在前面 > 最近在研究K8S,今天就輸出部分研究成果吧,後續也會持續更新。 ## 叢集規劃 | IP | 主機名 | 節點 | 作業系統版本 | | --------------- | --------- | ------ | ----------
超強教程!在樹莓派上構建多節點K8S叢集!
在很長一段時間裡,我對於在樹莓派上搭建Kubernetes叢集極為感興趣。在網路上找到一些教程並且跟著實操,我已經能夠將Kubernetes安裝在樹莓派上,並在三個Pi叢集中工作。然而,在master節點上對於RAM和CPU的要求已經超過了我的樹莓派所能提供的,因此在執行Kubernetes任務時效能並不優異
邊緣計算k8s叢集之SuperEdge
什麼是邊緣計算? 邊緣計算,是指在靠近物或資料來源頭的一側,採用網路、計算、儲存、應用核心能力為一體的開放平臺,就近提供最近端服務。其應用程式在邊緣側發起,產生更快的網路服務響應,滿足行業在實時業務、應用智慧、安全與隱私保護等方面的基本需求。邊緣計算處於物理實體和工業連線之間,或處於物理實體的頂端。而云端計算
hdu6035 Colorful Tree 樹形dp 給定一棵樹,每個節點有一個顏色值。定義每條路徑的值為經過的節點的不同顏色數。求所有路徑的值和。
void 題意 iostream cnblogs 編號 emp php scanf http /** 題目:hdu6035 Colorful Tree 鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6035 題意:給定一棵樹,每
二叉樹計算葉子節點的計算問題
image 使用 nbsp 9.png .com 1-1 技術 ima 清晰 題目如下: 計算方法需要使用兩個結論: 1: 總結點數=樹中的邊數+1 。見下圖可以清晰明白。 2:葉子節點數=總結點數-度數非零的節點數(戒子節點度為0) 所以本題目解法