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

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

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

關(guān)于K8S集群如何優(yōu)化的?

jf_TEuU2tls ? 來(lái)源:浩道linux ? 2023-02-06 10:45 ? 次閱讀
今天浩道跟大家分享關(guān)于K8S集群如何優(yōu)化的?以下從5個(gè)維度討論,希望給大家指明優(yōu)化方向

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

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

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

  • vCPU 個(gè)數(shù)

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

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

  • 安全組條數(shù)

  • 路由表?xiàng)l數(shù)

  • 持久化存儲(chǔ)大小

參考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)級(jí)別的能夠打開(kāi)的文件句柄的數(shù)量, 一般如果遇到文件句柄達(dá)到上限時(shí),會(huì)碰到"Too many open files"或者Socket/File: Can’t open so many files等錯(cuò)誤。
fs.file-max=1000000


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


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


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


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


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


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


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


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


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

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

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

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

etcd operator 有如下特性:

  • ceate/destroy: 自動(dòng)部署和刪除 etcd 集群,不需要人額外干預(yù)配置。
  • resize:可以動(dòng)態(tài)實(shí)現(xiàn) etcd 集群的擴(kuò)縮容。
  • backup:支持etcd集群的數(shù)據(jù)備份和集群恢復(fù)重建
  • upgrade:可以實(shí)現(xiàn)在升級(jí)etcd集群時(shí)不中斷服務(wù)。

2、配置etcd使用ssd固態(tài)盤(pán)存儲(chǔ);

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

4、需要配置單獨(dú)的 Etcd 集群存儲(chǔ) 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)存配置選項(xiàng)和node數(shù)量的關(guān)系,單位是MB:

--target-ram-mb=node_nums * 60

五、Pod 配置

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

1、為容器設(shè)置資源請(qǐng)求和限制,尤其是一些基礎(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中,會(huì)根據(jù)pod不同的limit 和 requests的配置將pod劃分為不同的qos類(lèi)別:

  • Guaranteed

  • Burstable

  • BestEffort

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

2、對(duì)關(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、盡量使用控制器來(lái)管理容器(如 Deployment、StatefulSet、DaemonSet、Job 等)
Kube-scheduler 配置

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

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

審核編輯 :李倩


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

    關(guān)注

    7

    文章

    3712

    瀏覽量

    64025
  • 數(shù)據(jù)備份
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    11772
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    21986

原文標(biāo)題:K8S集群優(yōu)化方向!我看可以從這5個(gè)維度著手~

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對(duì)比

    摘要: 今天,日志服務(wù)再次升級(jí)Kubernetes(k8s)的日志解決方案。1分鐘內(nèi)即可完成整個(gè)集群部署,支持動(dòng)態(tài)擴(kuò)容,提供采集宿主機(jī)日志、容器日志、容器stdout等所有數(shù)據(jù)源的一站式采集。點(diǎn)此
    發(fā)表于 02-28 12:49

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對(duì)比

    摘要: 今天,日志服務(wù)再次升級(jí)Kubernetes(k8s)的日志解決方案。1分鐘內(nèi)即可完成整個(gè)集群部署,支持動(dòng)態(tài)擴(kuò)容,提供采集宿主機(jī)日志、容器日志、容器stdout等所有數(shù)據(jù)源的一站式采集。點(diǎn)此
    發(fā)表于 02-28 12:50

    K8s 從懵圈到熟練 – 集群網(wǎng)絡(luò)詳解

    導(dǎo)讀:阿里云 K8S 集群網(wǎng)絡(luò)目前有兩種方案:一種是 flannel 方案;另外一種是基于 calico 和彈性網(wǎng)卡 eni 的 terway 方案。Terway 和 flannel 類(lèi)似
    發(fā)表于 10-14 15:06

    搭建K8s環(huán)境平臺(tái)的步驟

    1 搭建K8s環(huán)境平臺(tái)規(guī)劃1.1 單master集群1.2 多master集群
    發(fā)表于 11-04 06:03

    如何利用K8S全面擁抱微服務(wù)架構(gòu)?

    K8S是第一個(gè)將“一切以服務(wù)為中心,一切圍繞服務(wù)運(yùn)轉(zhuǎn)”作為指導(dǎo)思想的創(chuàng)新型產(chǎn)品,它的功能和架構(gòu)設(shè)計(jì)自始至終都遵循了這一指導(dǎo)思想,構(gòu)建在K8S上的系統(tǒng)不僅可以獨(dú)立運(yùn)行在物理機(jī)、虛擬機(jī)集群或者企業(yè)私有云上,也可以被托管在公有云中。
    的頭像 發(fā)表于 10-08 15:59 ?2.6w次閱讀

    OpenStack與K8s結(jié)合的兩種方案的詳細(xì)介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺(tái)之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.7w次閱讀

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對(duì)強(qiáng)大的集群,成千上萬(wàn)的容器,突然感覺(jué)不香了。 這時(shí)候就需要我們的主角 Kubernetes 上場(chǎng)了,先來(lái)了解一下 K8s 的基本概念,后面再介紹實(shí)踐,由淺入深步步為營(yíng)
    的頭像 發(fā)表于 06-02 11:56 ?3338次閱讀

    簡(jiǎn)單說(shuō)明k8s和Docker之間的關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡(jiǎn)單說(shuō)明,本文利用圖文講解的很透徹,有需要的同學(xué)可以研究下 最近項(xiàng)目用到kubernetes(以下簡(jiǎn)稱(chēng)k8sks之間有
    的頭像 發(fā)表于 06-24 15:48 ?3261次閱讀

    K8S集群服務(wù)訪(fǎng)問(wèn)失敗怎么辦 K8S故障處理集錦

    問(wèn)題1:K8S集群服務(wù)訪(fǎng)問(wèn)失敗? ? ? 原因分析:證書(shū)不能被識(shí)別,其原因?yàn)椋鹤远x證書(shū),過(guò)期等。 解決方法:更新證書(shū)即可。 問(wèn)題2:K8S集群服務(wù)訪(fǎng)問(wèn)失敗? curl: (7) Fa
    的頭像 發(fā)表于 09-01 11:11 ?1.5w次閱讀
    <b class='flag-5'>K8S</b><b class='flag-5'>集群</b>服務(wù)訪(fǎng)問(wèn)失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學(xué)習(xí)指南

    K8S(kubernetes)學(xué)習(xí)指南
    發(fā)表于 06-29 14:14 ?0次下載

    3個(gè)管理多k8s集群實(shí)用工具

    命令就會(huì)很低效。 今天介紹3個(gè)工具會(huì)讓你在多k8s集群環(huán)境中工作的很輕松。我將從以下幾個(gè)方面來(lái)評(píng)估工具實(shí)用性。
    的頭像 發(fā)表于 04-26 10:33 ?1027次閱讀
    3個(gè)管理多<b class='flag-5'>k8s</b><b class='flag-5'>集群</b>實(shí)用工具

    k8s集群環(huán)境中工作有多快

    命令就會(huì)很低效。 今天介紹3個(gè)工具會(huì)讓你在多k8s集群環(huán)境中工作的很輕松。我將從以下幾個(gè)方面來(lái)評(píng)估工具實(shí)用性: 速度 如果你有多個(gè)k8s集群可選擇,你切換
    的頭像 發(fā)表于 05-29 14:28 ?510次閱讀
    多<b class='flag-5'>k8s</b><b class='flag-5'>集群</b>環(huán)境中工作有多快

    切換k8s上下文有多快

    use-context 命令就會(huì)很低效。 今天介紹3個(gè)工具會(huì)讓你在多k8s集群環(huán)境中工作的很輕松。我將從以下幾個(gè)方面來(lái)評(píng)估工具實(shí)用性: 速度 如果你有多個(gè)k8s集群可選擇,你切換
    的頭像 發(fā)表于 05-29 15:26 ?649次閱讀
    切換<b class='flag-5'>k8s</b>上下文有多快

    k8s是什么意思?kubeadm部署k8s集群k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡(jiǎn)稱(chēng)K8s,是一個(gè)開(kāi)源的,用于管理云平臺(tái)中多個(gè)主機(jī)上的容器化的應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡(jiǎn)單并且高效(powerful
    發(fā)表于 07-19 13:14 ?1008次閱讀

    K8s集群管理:為什么需要多集群、多集群的優(yōu)勢(shì)是什么

    隨著K8s和云原生技術(shù)的快速發(fā)展,以及各大廠商在自己的數(shù)據(jù)中心使用K8s的API進(jìn)行容器化應(yīng)用編排和管理,讓?xiě)?yīng)用交付本身變得越來(lái)越標(biāo)準(zhǔn)化和統(tǒng)一化,并且實(shí)現(xiàn)了與底層基礎(chǔ)設(shè)施的完全解耦,為多集群和混合云提供了一個(gè)堅(jiān)實(shí)技術(shù)基礎(chǔ)。
    發(fā)表于 09-14 10:48 ?1027次閱讀
    <b class='flag-5'>K8s</b>多<b class='flag-5'>集群</b>管理:為什么需要多<b class='flag-5'>集群</b>、多<b class='flag-5'>集群</b>的優(yōu)勢(shì)是什么