0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

看看這5個維度是如何優(yōu)化Kubernetes集群的

馬哥Linux運(yùn)維 ? 來源:簡書 ? 作者:薛海山 ? 2021-09-24 14:40 ? 次閱讀

一、節(jié)點(diǎn)配額和內(nèi)核參數(shù)調(diào)整

對于公有云上的 Kubernetes 集群,規(guī)模大了之后很容器碰到配額問題,需要提前在云平臺上增大配額。這些需要增大的配額包括:

  • 虛擬機(jī)個數(shù)

  • vCPU 個數(shù)

  • 內(nèi)網(wǎng) IP 地址個數(shù)

  • 公網(wǎng) IP 地址個數(shù)

  • 安全組條數(shù)

  • 路由表條數(shù)

  • 持久化存儲大小

參考gce隨著node節(jié)點(diǎn)的增加master節(jié)點(diǎn)的配置:

  • 1-5 nodes: n1-standard-1

  • 6-10 nodes: n1-standard-2

  • 11-100 nodes: n1-standard-4

  • 101-250 nodes: n1-standard-8

  • 251-500 nodes: n1-standard-16

  • more than 500 nodes: n1-standard-32

參考阿里云配置:

# max-file 表示系統(tǒng)級別的能夠打開的文件句柄的數(shù)量,一般如果遇到文件句柄達(dá)到上限時,會碰到"Too many open files"或者Socket/File: Can’t open so many files等錯誤。
fs.file-max=1000000

#配置arpcache大小
net.ipv4.neigh.default.gc_thresh1=1024
#存在于ARP高速緩存中的最少層數(shù),如果少于這個數(shù),垃圾收集器將不會運(yùn)行。缺省值是128。

#保存在 ARP 高速緩存中的最多的記錄軟限制。垃圾收集器在開始收集前,允許記錄數(shù)超過這個數(shù)字 5 秒。缺省值是 512。
net.ipv4.neigh.default.gc_thresh2=4096

#保存在 ARP 高速緩存中的最多記錄的硬限制,一旦高速緩存中的數(shù)目高于此,垃圾收集器將馬上運(yùn)行。缺省值是1024。
net.ipv4.neigh.default.gc_thresh3=8192

#以上三個參數(shù),當(dāng)內(nèi)核維護(hù)的arp表過于龐大時候,可以考慮優(yōu)化

#允許的最大跟蹤連接條目,是在內(nèi)核內(nèi)存中netfilter可以同時處理的“任務(wù)”(連接跟蹤條目)
net.netfilter.nf_conntrack_max=10485760

#哈希表大小(只讀)(64位系統(tǒng)、8G內(nèi)存默認(rèn)65536,16G翻倍,如此類推)
net.core.netdev_max_backlog=10000
#每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最大數(shù)目。
net.netfilter.nf_conntrack_tcp_timeout_established=300
net.netfilter.nf_conntrack_buckets=655360

#關(guān)于conntrack的詳細(xì)說明:https://testerhome.com/topics/7509

#默認(rèn)值:128指定了每一個realuserID可創(chuàng)建的inotifyinstatnces的數(shù)量上限
fs.inotify.max_user_instances=524288

#默認(rèn)值:8192指定了每個inotifyinstance相關(guān)聯(lián)的watches的上限
fs.inotify.max_user_watches=524288

二、Etcd 數(shù)據(jù)庫

1、搭建高可用的etcd集群,集群規(guī)模增大時可以自動增加etcd節(jié)點(diǎn);

目前的解決方案是使用etcd operator來搭建etcd 集群,operator是CoreOS推出的旨在簡化復(fù)雜有狀態(tài)應(yīng)用管理的框架,它是一個感知應(yīng)用狀態(tài)的控制器,通過擴(kuò)展Kubernetes API來自動創(chuàng)建、管理和配置應(yīng)用實(shí)例。

etcd operator 有如下特性:

  • ceate/destroy: 自動部署和刪除 etcd 集群,不需要人額外干預(yù)配置。

  • resize:可以動態(tài)實(shí)現(xiàn) etcd 集群的擴(kuò)縮容。

  • backup:支持etcd集群的數(shù)據(jù)備份和集群恢復(fù)重建

  • upgrade:可以實(shí)現(xiàn)在升級etcd集群時不中斷服務(wù)。

2、配置etcd使用ssd固態(tài)盤存儲;

3、設(shè)置 —quota-backend-bytes 增大etcd的存儲限制。默認(rèn)值是 2G;

4、需要配置單獨(dú)的 Etcd 集群存儲 kube-apiserver 的 event。

三、Kube APIServer 配置

node節(jié)點(diǎn)數(shù)量 >= 3000, 推薦設(shè)置如下配置:

--max-requests-inflight=3000
--max-mutating-requests-inflight=1000

node節(jié)點(diǎn)數(shù)量在 1000 — 3000, 推薦設(shè)置如下配置:

--max-requests-inflight=1500
--max-mutating-requests-inflight=500

內(nèi)存配置選項和node數(shù)量的關(guān)系,單位是MB:

--target-ram-mb=node_nums*60

四、Pod 配置

在運(yùn)行 Pod 的時候也需要注意遵循一些最佳實(shí)踐,比如:

1、為容器設(shè)置資源請求和限制,尤其是一些基礎(chǔ)插件服務(wù)

spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
spec.containers[].resources.limits.ephemeral-storage
spec.containers[].resources.requests.ephemeral-storage

在k8s中,會根據(jù)pod不同的limit 和 requests的配置將pod劃分為不同的qos類別:

  • Guaranteed

  • Burstable

  • BestEffort

當(dāng)機(jī)器可用資源不夠時,kubelet會根據(jù)qos級別劃分遷移驅(qū)逐pod。被驅(qū)逐的優(yōu)先級:BestEffort > Burstable > Guaranteed

2、對關(guān)鍵應(yīng)用使用 nodeAffinity、podAffinity 和 podAntiAffinity 等保護(hù),使其調(diào)度分散到不同的node上。比如kube-dns 配置:

affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
-weight:100
labelSelector:
matchExpressions:
-key:k8s-app
operator:In
values:
-kube-dns
topologyKey:kubernetes.io/hostname

3、盡量使用控制器來管理容器(如 Deployment、StatefulSet、DaemonSet、Job 等)Kube-scheduler 配置

設(shè)置 —kube-api-qps=100 默認(rèn)值是 50Kube-controller-manager 配置

設(shè)置 —kube-api-qps=100 默認(rèn)值是20設(shè)置 —kube-api-burst=100 默認(rèn)值是30

作者:薛海山https://www.jianshu.com/p/e9fcc1a9eea

編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16427

    瀏覽量

    178901
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    225

    瀏覽量

    8734

原文標(biāo)題:Kubernetes 集群怎樣優(yōu)化?看看這5個維度

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Kubernetes的CNI網(wǎng)絡(luò)插件之flannel

    Kubernetes設(shè)計了網(wǎng)絡(luò)模型,但卻將它的實(shí)現(xiàn)講給了網(wǎng)絡(luò)插件,CNI網(wǎng)絡(luò)插件最重要的功能就是實(shí)現(xiàn)Pod資源能夠跨主機(jī)通信。
    的頭像 發(fā)表于 01-02 09:43 ?243次閱讀

    國產(chǎn)智算集群黑馬!曦源一號SADA算力集群綜合評測表現(xiàn)優(yōu)異

    穩(wěn)定性、線性度、模型支持度等多個維度均表現(xiàn)優(yōu)異。加佳科技長期深耕國產(chǎn)替代數(shù)字科技的技術(shù)研發(fā)、平臺運(yùn)營與解決方案提供。旗下曦源一號SADA萬卡集群通過構(gòu)建開放、標(biāo)準(zhǔn)、
    的頭像 發(fā)表于 12-25 11:16 ?321次閱讀
    國產(chǎn)智算<b class='flag-5'>集群</b>黑馬!曦源一號SADA算力<b class='flag-5'>集群</b>綜合評測表現(xiàn)優(yōu)異

    如何從參數(shù)和價格2維度來挑選合適的LoRa模塊

    “參數(shù)”、“價格”這2維度來幫助大家看看如何挑選合適的LoRa模塊。 什么是LoRa? LoRa是創(chuàng)建長距離通信連接的物理層無線調(diào)制技術(shù),屬于線性調(diào)制擴(kuò)頻技術(shù)(Chirp Spread Spectrum,CSS)的一種,也叫寬
    的頭像 發(fā)表于 11-26 11:09 ?342次閱讀
    如何從參數(shù)和價格2<b class='flag-5'>個</b><b class='flag-5'>維度</b>來挑選合適的LoRa模塊

    如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)

    并從計算節(jié)點(diǎn)成本優(yōu)化、集群網(wǎng)絡(luò)與拓?fù)涞倪x擇等方面論述如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)。
    的頭像 發(fā)表于 11-06 16:03 ?442次閱讀
    如何構(gòu)建及<b class='flag-5'>優(yōu)化</b>GPU云網(wǎng)絡(luò)

    docker和k8s部署在云平臺性能要求盤點(diǎn)

    Docker和Kubernetes在云平臺部署時有各自的性能要求。Docker需要足夠的CPU、內(nèi)存和存儲資源,以及快速的網(wǎng)絡(luò)帶寬和優(yōu)化的鏡像大小。而Kubernetes則強(qiáng)調(diào)集群管理
    的頭像 發(fā)表于 11-05 10:47 ?232次閱讀

    Kubernetes集群搭建容器云需要幾臺服務(wù)器?

    Kubernetes集群搭建容器云需要幾臺服務(wù)器?至少需要4臺服務(wù)器。搭建容器云所需的服務(wù)器數(shù)量以及具體的搭建步驟,會根據(jù)所選用的技術(shù)棧、業(yè)務(wù)規(guī)模、架構(gòu)設(shè)計以及安全需求等因素而有所不同。以下是一基于
    的頭像 發(fā)表于 10-21 10:06 ?176次閱讀

    世界前十科技集群 中國有4 深圳-香港-廣州 上海-蘇州上榜

    根據(jù)WIPO中國公布的2024GII百強(qiáng)科技集群排名榜單顯示;排名世界前十科技集群我國有4 ;分別是深圳-香港-廣州 ;北京;上海-蘇州;南京;? 此外我國的武漢、杭州表現(xiàn)也非常不錯,排名分別位列
    的頭像 發(fā)表于 08-29 14:16 ?484次閱讀

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(被 VMWare 收購)開源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?385次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝Kubernetes集群

    Kubernetes,通??s寫為K8s,是一開源的容器編排平臺,旨在自動化容器化應(yīng)用的部署、擴(kuò)展和管理。有了Kubernetes,您可以輕松地部署、更新和擴(kuò)展應(yīng)用,而無需擔(dān)心底層基礎(chǔ)設(shè)施。
    的頭像 發(fā)表于 07-15 13:31 ?889次閱讀
    如何使用Kubeadm命令在PetaExpress Ubuntu系統(tǒng)上安裝<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺部署高可用 Redis 集群

    并且需要手動重啟節(jié)點(diǎn),相較之下,使用 PetaExpress 提供的 Kubernetes(k8s) 服務(wù) 進(jìn)行 Redis 集群的部署,則展現(xiàn)出了顯著的優(yōu)勢: 1、安裝便捷:使用鏡像或者 yaml 配置文件即可一件安裝,極大地簡化了安裝流程 2、縮擴(kuò)容方便:在 擴(kuò)容 、
    的頭像 發(fā)表于 07-03 15:30 ?810次閱讀
    K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺部署高可用 Redis <b class='flag-5'>集群</b>

     K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube 集群

    使得開發(fā)人員能夠在本地機(jī)器上輕松創(chuàng)建一單節(jié)點(diǎn)的 Kubernetes 集群,從而方便開發(fā)、測試和學(xué)習(xí) Kubernetes。 我們看下如何使用PetaExpress云服務(wù)器安裝Mi
    的頭像 發(fā)表于 07-01 15:41 ?395次閱讀
     K8S學(xué)習(xí)教程一:使用PetaExpress云服務(wù)器安裝Minikube <b class='flag-5'>集群</b>

    HBase集群數(shù)據(jù)在線遷移方案探索

    一、背景 訂單本地化系統(tǒng)目前一月的訂單的讀寫已經(jīng)切至jimkv存儲,對應(yīng)的HBase集群已下線。但存儲全量數(shù)據(jù)的HBase集群仍在使用,計劃將這個HBase集群中的數(shù)據(jù)全部遷到j(luò)im
    的頭像 發(fā)表于 06-12 11:54 ?1202次閱讀
    HBase<b class='flag-5'>集群</b>數(shù)據(jù)在線遷移方案探索

    高性能計算集群的能耗優(yōu)化

    高性能計算(HighPerformanceComputing,HPC)是指利用大規(guī)模并行計算機(jī)集群來解決復(fù)雜的科學(xué)和工程問題的技術(shù)。高性能計算集群的應(yīng)用領(lǐng)域非常廣泛,包括天氣預(yù)報、生物信息學(xué)
    的頭像 發(fā)表于 05-25 08:27 ?480次閱讀
    高性能計算<b class='flag-5'>集群</b>的能耗<b class='flag-5'>優(yōu)化</b>

    Kubectl核心命令總結(jié):如何快速掌握K8s

    設(shè)置 kubectl 命令交互的 kubernetes 集群并修改配置信息。參閱 使用 kubeconfig 文件進(jìn)行跨集群驗證 獲取關(guān)于配置文件的詳細(xì)信息。
    的頭像 發(fā)表于 02-23 14:43 ?492次閱讀
    Kubectl核心命令總結(jié):如何快速掌握K8s

    淺析Ranther管理K8S集群

    Rancher 基于 Kubernetes 添加了新的功能,包括統(tǒng)一所有集群的身份驗證和 RBAC,讓系統(tǒng)管理員從一位置控制全部集群的訪問。
    的頭像 發(fā)表于 01-21 10:28 ?933次閱讀
    淺析Ranther管理K8S<b class='flag-5'>集群</b>