下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、生產(chǎn)環(huán)境k8s集群優(yōu)化技巧1、內(nèi)核參數(shù)調(diào)化fs. fi1e-max=1000000max-file表示系統(tǒng)級別的能夠翻開的文件句柄的數(shù)量,一般如果遇到文件句柄到達(dá)上限 時,會碰到“Too many open files或者 Socket/File: Can t open so many files 等錯誤。配置arp cache大小net. ipv4. neigh. default. gc_threshl=1024存在于ARP高速緩存中的最少層數(shù),如果少于這個數(shù),垃圾收集器將不會運行。缺省值是 128onet. ipv4. neigh, default. gc_thresh2=4096保存在A
2、RP高速緩存中的最多的記錄軟限制。垃圾收集器在開始收集前,允許記錄數(shù)超過 這個數(shù)字5秒。缺省值是512Onet. ipv4. neigh, default. gc_thresh3=8192保存在ARP高速緩存中的最多記錄的硬限制,一旦高速緩存中的數(shù)目高于此,垃圾收集器 將馬上運行。缺省值是1024o以上三個參數(shù),當(dāng)內(nèi)核維護(hù)的arp表過于龐大時候,可以考慮優(yōu)化net. netfilter. nf_conntrack_max=10485760允許的最大跟蹤連接條目,是在內(nèi)核內(nèi)存中netfilter可以同時處理的“任務(wù)”(連接跟蹤 條目)net. netfilter. nf_conntrack_tc
3、p_timeout_established=300net. netfilter. nf_conntrack_buckets=655360哈希表大?。ㄖ蛔x)(64位系統(tǒng)、8G內(nèi)存默認(rèn)65536, 16G翻倍,如此類推)net. dev max backlog=10000每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊列的數(shù)據(jù)包的最 大數(shù)目。fs. inotify. max_user_instances=524288默認(rèn)值:128指定了每一個real user ID可創(chuàng)立的inotify instatnces的數(shù)量上限fs. inotify. max user_watches=5
4、24288默認(rèn)值:8192指定了每個inotify instance相關(guān)聯(lián)的watches的上限2、etcd性能優(yōu)化l、Etcd對磁盤寫入延遲非常敏感,因此對于負(fù)載較重的集群,etcd 一定要使用local SSD 或者高性能云盤??梢允褂胒i。測量磁盤實際順序IOPS。fio -filename=/dev/sdal -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group reporting -name=file由于etcd必須將數(shù)據(jù)持久保存到磁
5、盤日志文件中,因此來自其他進(jìn)程的磁盤活動可能 會導(dǎo)致增加寫入時間,結(jié)果導(dǎo)致3tcd請求超時和臨時leader喪失。因此可以給etcd進(jìn)程 更高的磁盤優(yōu)先級,使etcd服務(wù)可以穩(wěn)定地與這些進(jìn)程一起運行。ionice -c2 -n0 -p $ (pgrep etcd) | header3、默認(rèn)etcd空間配額大小為2G,超過2G將不再寫入數(shù)據(jù)。通過給etcd配置一quota- backend-bytes參數(shù)增大空間配額,最大支持8G。| 一quota-backend-bytes 8589934592 | header |如果etcd leader處理大量并發(fā)客戶端請求,可能由于網(wǎng)絡(luò)擁塞而延遲處理f
6、ollower對等請求。在follower節(jié)點上可能會產(chǎn)生如下的發(fā)送緩沖區(qū)錯誤的消息:dropped MsgProp to 247ae21ff9436b2d since streamMsg,s sending buffer is full dropped MsgAppResp to 247ae21ff9436b2d since streamMsg,s sending buffer is full 可以通過提高etcd對于對等網(wǎng)絡(luò)流量優(yōu)先級來解決這些錯誤。在Linux上,可以使用tc 對對等流量進(jìn)行優(yōu)先級排序:tc qdisc add dev ethO root handle 1: prio b
7、ands 3tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1 tc filter add dev Oxffff flowid 1:1ethO par
8、ent 1:ethO parent 1:ethO parent 1:ethO parent 1:protocolprotocolprotocolprotocolip prio 1 u32 match ip sport 2380ip prio 1 u32 match ip dport 2380ip prio 2 u32 match ip sport 2379ip prio 2 u32 matchip dport 2379為了在大規(guī)模集群下提高性能,可以將events存儲在單獨的ETCD實例中,可以配置 kube-apiserver 參數(shù):-eted-servers= :etcd 1:2379,
9、:/etcd2:2379, :etcd3:2379一eted-servers-overrides=zz/events# :/etcd4:2379, : /etcd5:2379, :etcd6:23793、docker 優(yōu)化1、配置docker daemon并行拉取鏡像,以提高鏡像拉取效率,在/etc/docker/daemon. json 中添加以下配置:,/max-concurrent-downloads,z: 10可以使用local SSD或者高性能云盤作為docker容器的持久數(shù)據(jù)目錄,在 /etc/docker/daemon, json 中添加以下配置: “data-root: /ss
10、dmountdir”啟動pod時都會拉取pause鏡像,為了減小拉取pause鏡像網(wǎng)絡(luò)帶寬,可以每個node 預(yù)加載pause鏡像,在每個node節(jié)點上執(zhí)行以下命令: docker load -i /tmp/preloaded_pause_image. tar 4、kubelet 優(yōu)化1設(shè)置一serialize-image-pulls=false,該選項配置串行拉取鏡像,默認(rèn)值時true, 配置為false可以增加并發(fā)度。但是如果docker daemon版本小于1. 9,且使用aufs存儲那么不能改動該選項。設(shè)置-image-pul 1-progress-deadline=30,配置鏡像拉取
11、超時。默認(rèn)值時1分,對 于大鏡像拉取需要適量增大超時時間。kubelet單節(jié)點允許運行的最大Pod數(shù):-max-pods=110 (默認(rèn)是110,可以根據(jù)實 際需要設(shè)置)5、kube-apiserver 優(yōu)化設(shè)置 一apiserver-count 和 一endpoint-reconciler-type, 可使得多個 kube- apiserver實例加入到Kubernetes Service的endpoints中,從而實現(xiàn)高可用。設(shè)置 一一max-requests-inflight 和 一一max-mutating-requests-inflight,默認(rèn)是 200 和400o節(jié)點數(shù)量在100
12、0 - 3000之間時,推薦:-max-requests-inflight=l500-max-mutating-requestsinflight=500節(jié)點數(shù)量大于3000時,推薦:一max-requests-inflight=3000-max-mutating-requests-inflight=1000使用-target-ram-mb配置kube-apiserver的內(nèi)存,按以下公式得到一個合理的值:-target-ram-mb=node_nums * 606、kube-control ler-manager 優(yōu)化6. 1 kube-controller-manager可以通過leader
13、 election實現(xiàn)高可用,添加以下命令行 參數(shù):一leader-elect=true一leader-elect-lease-duration=15s一一leaderelect-renew-deadline=10s一leader-elect-resource-1ock=endpoints-leader-elect-retry-period=2s2、限制與kube-apiserver通信的qps,添加以下命令行參數(shù):一kube-api-qps=100-一kube-api-burst=1507、kube-scheduler 優(yōu)化1、kube-scheduler可以通過leader electio
14、n實現(xiàn)高可用,添加以下命令行參數(shù):一leader-elect=true一leader-elect-lease-duration=15s-leader-elect-renew-deadline=10s一leader-elect - resourceTock = endpoints一leader-elect-retry-period=2s2、限制與kube-apiserver通信的qps,添加以下命令行參數(shù):一kube-api-qps=100一kube-api-burst=1508、pod優(yōu)化為容器設(shè)置資源請求和限制,尤其是一些基礎(chǔ)插件服務(wù)spec, containers. resources,
15、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類別
16、: GuaranteedBurstableBestEffort當(dāng)機器可用資源不夠時,kubelet會根據(jù)qos級別劃分遷移驅(qū)逐pod。被驅(qū)逐的優(yōu)先級: BestEffort Burstable Guaranteedo對關(guān)鍵應(yīng)用使用 nodeAffinity podAffinity 和 podAntiAffinity 等保護(hù),使其調(diào) 度分散到不同的node _Eo比方kube-dns配置3盡量使用控制器來管理容器(如Deployments StatefulSet DaemonSet Job等)9、kubernetes集群數(shù)據(jù)備份與還原1 etcd數(shù)據(jù)備份(備份數(shù)據(jù)前先找到etcd集群當(dāng)前的lea
17、der) TOC o 1-5 h z ETCDCTL API=3etcdctl-endpoints=127. 0. 0. 1:2379-cert=/etc/kubernetes/pki/etcd/server, crt-key=/etc/kubernetes/pki/etcd/server, key-cacert=/etc/kubernetes/pki/etcd/ca. crt endpoint -cluster status | grep -v false | awk -F / print $4然后登錄到leader節(jié)點,備份snapshot db文件:rsync -avp /var/lib
18、/etcd/member/snap/db /tmp/etcd_db. bak還原 將備份的snaphost db文件上傳到各個etcd節(jié)點,使用以下命令還原數(shù)據(jù):ETCDCTL_API=3 etcdctl snapshot restore/tmp/etcd db. bak-endpoints=192. 168.0. 11:2379-name=192. 168. 0. 11一cert=/etc/kubernetes/pki/etcd/server, crt 一key=/etc/kubernetes/pki/etcd/server.key一一cacert=/etc/kubernetes/pki/e
19、tcd/ca. crt 一一initial-advertise-peer-urls= s:/1:2380 一initial-cluster-token=etcd-cluster-0 -initial-cluster=192.168.0.ll=. 0. 11:2380, 192.168. 0. 12= s:/192. 168. 0. 1 2:2380,3=. 0. 13:2380-data-dir=/var/lib/etcd/-一skip-hash-check=trueharbor如果使用harbor作為鏡像倉庫與chart倉庫,可使用腳本將harbor中所有的鏡像和chart 導(dǎo)入導(dǎo)出。備份腳
20、本#!/bin/bashharborUsername=,admin,harborPassword=,Harborl2345,harborRegistry=,registry, test, comharborBasicAuthToken=$ (echo -n z/$ harborUsername : $ harborPassword| base64) docker login -username $harborUsername -password $harborPassword) $harborRegistry)rm -f dist/images.listrm -f dist/charts. l
21、ist# list projectsprojs=curl-s -k HI Authorization: Basic $harborBasicAuthToken),z/z s :/$ harborRegistry,/,/api/projects?page=l&page_size=1000, jq -r .口 (.project_id) = (. name) for proj in $ projs*; doprojld=echo $proj|cut -d -f 1projName=echo $proj|cut -d =f 2# list repos in one projectrepos=curl
22、 -s -k -H “Authorization: Basic $ harborBasicAuthToken),z “ s:$harborRegistry /api/repositories?page=l&page_size=1000&project_id= $projld | jq -r | ( id) = ( name) for repo in $repos *; dorepold= echo $repo|cut -d =-f 1repoName=echo $repo|cut -d =-f 2# list tags in one repotags=curl -s -k -H Authori
23、zation: Basic $ harborBasicAuthToken,z “ s:$ harborRegistry /api/repositories/ $ repoName),z,/tags?detail=l, | jq -r,1. name,for tag in $ tags*; doecho $tag);pull imagedocker pull $harborRegistry/$repoName:$tagtag imagedocker tag $harborRegistry/$repoName:$tag) $repoName:$tag)save imagemkdir -p $(di
24、rname dist/$repoName)docker save -o dist/$repoName:$tag. tar $repoName:$tagrecord image to list fileecho $repoName:$tag dist/images, list done done# list charts in one projectcharts= curl -s -k -H Authorization: Basic $ harborBasicAuthToken /z s:/$ harborRegistry),z,/api/chartrepo/ $ projName /chart
25、s | jq -r 1 namefor chart in $charts*; do#echo $ chart)# list download urls in one chartdurls=curl -s -k -H Authorization: Basic $harborBasicAuthTokenz, “ s :$ harborRegistry /api/chartrepo/ $ projName),z,/charts/ $ chart | jq -r .urls01,#echo $durl*for durl in $ durls*; dottecho $durl;download char
26、tmkdir -p $(dirname dist/$projName/$durl)curl -s -k -H Authorization: Basic $ harborBasicAuthToken/z -o dist/$projName/$durl“ s :$ harborRegistry /chartrepo/$ projName/$ durl record chart to list fileecho $projName/$durl dist/charts. listdonedone done10.2、還原腳本#!/bin/bashharborUsername=,adminharborPa
27、ssword=,Harborl2345,harborRegistry=registry, test. com,harborBasicAuthToken=$ (echo -n /z$ harborUsername : $ harborPassword| base64)docker login -username $harborUsername -password $harborPassword) $harborRegistry)while IFS= read -r image | -n $image doprojName=$image%/*)echo $ projNamecreate harbo
28、r projectcurl -k -X POST -H Authorization: Basic $ harborBasicAuthToken),z “ s :$ harborRegistry /api/pro jects -H accept: application/jsonz, -H Content-Type: app 1 ication/jsonz, -d project name“: $projName, “metadata: public”: true load imagedocker load -i dist/$image). tartag imagedocker tag $ima
29、ge) $harborRegistry/$image)push imagedocker push $harborRegistry/$imagedone dist/images. listwhile IFS= read -r chart | -n $chart doprojName=$chart%/*)echo $projNamecreate harbor projectcurl -k -X POST -H Authorization: Basic $ harborBasicAuthToken),z “ s:$ harborRegistry /api/projects -H accept: application/jsonz, -H “Content-Type: application/json,/ -d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人遺產(chǎn)繼承貸款合同擔(dān)保書及遺產(chǎn)評估報告4篇
- 二零二五年度企業(yè)財務(wù)重組與破產(chǎn)清算服務(wù)合同3篇
- 2025年度智慧家居系統(tǒng)搭建與智能家居服務(wù)合同4篇
- 二零二五年度工業(yè)用地出租合同書
- 2025年度門診醫(yī)生競業(yè)限制與醫(yī)療技術(shù)保密協(xié)議
- 二零二五版財產(chǎn)分割離婚協(xié)議含離婚后財產(chǎn)增值監(jiān)控機制2篇
- 2025年度新型木結(jié)構(gòu)建筑木工安裝專業(yè)合同書4篇
- 二零二五年度商用美的中央空調(diào)銷售與綜合維護(hù)服務(wù)合同4篇
- 二零二五年度交通事故債務(wù)財產(chǎn)分割與債務(wù)賠償協(xié)議3篇
- 2025年個人意外傷害保險代繳服務(wù)合同樣本4篇
- 2024年人教版小學(xué)三年級信息技術(shù)(下冊)期末試卷附答案
- TB 10012-2019 鐵路工程地質(zhì)勘察規(guī)范
- 新蘇教版三年級下冊科學(xué)全冊知識點(背誦用)
- 鄉(xiāng)鎮(zhèn)風(fēng)控維穩(wěn)應(yīng)急預(yù)案演練
- 腦梗死合并癲癇病人的護(hù)理查房
- 蘇教版四年級上冊脫式計算300題及答案
- 犯罪現(xiàn)場保護(hù)培訓(xùn)課件
- 扣款通知單 采購部
- 電除顫操作流程圖
- 湖北教育出版社三年級下冊信息技術(shù)教案
- 設(shè)計基礎(chǔ)全套教學(xué)課件
評論
0/150
提交評論