一.什么是K8S
k8s全稱kubernetes,K8s 是 Google 在 2014 年開源出來的用于解決生產環境中大規模容器編排的組件,換言之,k8s是為容器服務而生的一個可移植容器的編排管理工具,
K8s三大特性:第一,K8s 自帶便捷性,包括故障自愈、容器編排、服務發現,使應用更便捷,第二,K8s 在資料庫、Serverless、邊緣計算、微服務等多種技術領域的應用,擴展了其使用場景的邊界,第三,K8s 具備的穩定性與安全性為其生產應用提供了強有力的支持,除此之外,周邊生態的持續完善也為 K8s 迎來長足的發展奠定了不可磨滅的基礎,
二.K8S的作用和架構
首先,從容器技術談起,在容器技術之前,大大家用虛擬機比較多,比如vmware和openstack,我們可以使用虛擬機模擬出多臺子電腦(Linux),子電腦之間是相互隔離的,但是虛擬機對于開發和運維人員而言,存在啟動慢,占用空間大,不易遷移的缺點,接著,容器化技術應運而生,它不需要虛擬出整個作業系統,只需要虛擬一個小規模的環境即可,而且啟動速度很快,除了運行其中應用以外,基本不消耗額外的系統資源,Docker是應用最為廣泛的容器技術,通過打包鏡像,啟動容器來創建一個服務,但是隨著應用越來越復雜,容器的數量也越來越多,由此衍生了管理運維容器的問題,而且隨著云計算的發展,云端最大的挑戰,容器在漂移,在此業務驅動下,k8s問世,提出了一套全新的基于容器技術的分布式架構領先方案,在整個容器技術領域的發展是一個重大突破與創新,
k8s可以使我們應用的部署和運維更加方便,具體來說,主要包括以下幾點:
- 服務發現與調度
- 負載均衡
- 服務自愈
- 服務彈性擴容
- 橫向擴容
- 存盤卷掛載
k8s的架構

部分概念
Pod
1.最小部署單位 2.一組容器的集合 3.在一個Pod的容器共享網路命名空間(pod容器之間的網路是共享的,例如A B倆個容器屬于一個pod,A上開了80埠,B上的80埠也是開通的) 4.Pod是短暫的(應用更新或者發版后Pod就會銷毀)
Controllers
1.ReplicaSet: 確保預期的Pod副本數量 2.Deployment: 無狀態應用部署 (Pod故障觸發遷移后,Pod中的應用可以照常使用,不需要考慮存盤、網路等問題,例如web應用) 3.StatefulSet: 有狀態應用部署 (Pod故障觸發遷移后,需要考慮網路和存盤是否可以正常呼叫,有狀態部署會對網路和存盤進行標識,例如mysql主從和zk集群)
4.DaemonSet: 確保所有Node運行同一個Pod
5.Job: 一次性任務
6.Cronjob: 定時任務
Service
作用:將請求轉發到相應的一組Pod和實作一定的負載功能,暴露應用
1.防止Pod失聯 2.定義一組Pod的訪問策略
Label
標簽,附加到某個資源上,用于關聯物件、查詢和篩選
Namespace
命名空間,將物件邏輯上隔離
三.部署
k8s部署方式
https://www.cnblogs.com/python-cat/p/12515436.html
k8s環境部署(一)
https://www.cnblogs.com/python-cat/p/10831419.html
四.使用注意事項
4.1 優化方法
- Utility: CPU/記憶體/磁盤/網路利用率
- Saturation: 各種佇列長度/飽和度
- Error: 協議堆疊錯誤、應用層錯誤日志
4.2 指標收集
- 系統指標: top/sysstat 包等(debian)
- 應用指標: prometheus + grafana
- 工具包索引圖

4.3 流控優化
默認流控重試時間1S,其機理是,重啟時所有client需要重新list&watch導致并發請求量過高(包含bootstrap controller),超過流控,超過流控之后,回傳回應碼 429,同時在回應頭里添加 RetryAfter 告訴 client 1s 之后再試,造成 APIServer 長時間過載,優化方式:(1).多級流控:在讀寫流控的基礎上,根 據 UserAgent、Resource、Verb 進 行細粒度流控,例如: 通過 UserAgent,限制 kubelet,優先允許 Master 組件初始 化(APIServer Bootstrap Controller、其他Controller 和 Scheduler 等),(2)擁塞控制:靜態 Retry-After 改為動 態值,根據系統當前繁忙程度調節1到 8s(token bucket).其演算法為:初始化時間視窗為1s、容量210 的 bucket,每次被流控嘗試拿Token,可用量 >1/2,回傳 1s;可用量 > ?, 回傳 2s;可用量 > 1/8, 回傳 4s;可用量不足或者不可用, 回傳 8s,

五 參考學習
1.什么是K8S
https://zhuanlan.zhihu.com/p/103124918
2.網易云kubernetes性能優化實踐
https://www.itdks.com/Course/detail?id=3513
3.https://www.cnblogs.com/python-cat/category/1459874.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296126.html
標籤:其他
