文章目錄
- 前言
- Kubernetes/K8s 理論詳解
- 1.K8s 是什么?
- 2.K8s 特性
- 3.小拓展(業務升級)
- 4.K8s 集群架構與組件
- ①架構拓撲圖:
- ②Master 組件
- ③Node 組件
- 5.K8s 核心概念
前言
Kubernetes,簡稱 K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應用
其技術難度與入門門檻較高,學習之前,建議掌握以下基礎:
- 熟悉 Linux 基礎命令
- 熟悉 Docker 基本管理
- 了解 SSL 證書作業原理
- 了解負載均衡作業原理(L4/L7)
- 了解群集(分布式概念)
- 了解域名決議原理(Pod)
- 了解網路協議(網路組件)
Kubernetes/K8s 理論詳解
1.K8s 是什么?
- Kubernetes 是 Google 在 2014 年開源的一個容器集群管理系統,使用 Go 開發,簡稱為 K8s,用于容器化應用程式的部署,擴展和管理
- K8s 提供了容器編排(yml),資源調度,彈性伸縮,部署管理,服務發現等一系列功能,目標是讓部署容器化應用簡單高效
- K8s 兼容多種容器型別,市場占用率最高,官網:https://kubernetes.io/
2.K8s 特性
- 自我修復: 在節點故障時替換和重新部署,保證預期的副本數量;殺死健康檢查失敗的容器(探針),并且在未準備好之前不會處理客戶端請求,確保線上服務不中斷
- 彈性伸縮: 使用命令(字符界面)或 UI(圖形化界面),基于 CPU 使用情況自動快速擴容和縮容應用程式實體,保證應用業務高峰并發時的高可用性;業務低峰時回收資源,以最小成本運行服務
- 自動部署和回滾: K8s 采用滾動更新策略更新應用,一次更新一個 Pod,而不是同時洗掉所有 Pod,如果更新程序中出現問題,將回滾更改,確保升級不受影響業務
- 服務發現和負載均衡: K8s 為多個容器提供一個統訪問入口(內部 IP 地址和一個 DNS 名稱),并且負載均衡關聯的所有容器,使得用戶無需考慮容器 IP 問題
- 機密和配置管理: 管理機密資料和應用程式配置,而不需要把敏感資料暴露在鏡像里,提高敏感資料安全性;并可以將一些常用的配置存盤在 K8s 中,方便應用程式使用(身份驗證:命名空間,邏輯劃分權限管理)
- 存盤編排: 掛載外部存盤系統,無論是來自本地存盤,公有云(如 AWS),還是網路存盤(如NFS、GlusterFS、Ceph)都作為集群資源的一部分使用, 極大提高存盤使用靈活性
- 批處理: 提供一次性任務,周期性任務;滿足批量資料處理和分析的場景
3.小拓展(業務升級)
灰度發布(金絲雀):
- 指在黑與白之間,能夠平滑過渡的一種發布方式,灰度發布可以有效保證整體系統的穩定,降低產品升級所影響的用戶范圍
- 例如,讓一部分用戶繼續使用產品特性A,一部分用戶開始用產品特性B,如果用戶對B沒有什么反對意見,那么逐漸擴大范圍,把所有用戶都遷移到B上面來
藍綠發布:
- 例如,專案邏輯上分為A/B組,首先把A組從負載均衡中摘除,進行新版本部署,B組繼續提供服務
- 當A組升級完畢,負載均衡重新接入A組,再將B組從負載串列中摘除進行新版本部署,A組重新提供服務
- 最終,B組完成升級,負載均衡重新接入B組,至此,A/B組皆升級完畢,對外提供服務,達到用戶無感知、平滑過渡的效果
滾動發布:
- 指每次只升級一個或多個服務,升級完成后加入生產環境
- 不斷執行這個程序,直到集群中的全部舊版本升級為新版本
4.K8s 集群架構與組件
①架構拓撲圖:

②Master 組件
Kube-apiserver:
-
Kubernetes API,集群的統一入口, 各組件協調者
-
以 RESTful API提供介面服務(支持網站標準協議)
-
所有物件資源的增刪改查和監聽操作都交給 APIServer 處理后再提交給 Etcd 存盤資料
Kube-controller-manager:
-
處理集群中常規后臺任務
-
一個資源對應一個控制器,比如容器資源(pod)掛了,若控制器還存活,則會重新創建該資源,所以修復能力依賴于控制完成
-
controllerManager 負責管理這些控制器
kube-scheduler:
-
根據調度演算法為新創建的 Pod 選擇一個 Node 節點,可以任意部署可以部署在同
一個節點上,也可以部署在不同的節點上 -
所有資源的創建不一定都要經過調度器
etcd:
- 分布式鍵值存盤系統
- 用于保存集群狀態資料,比如 Pod、Service 等物件資訊
③Node 組件
kubelet:
-
kubelet 是 Master 在 Node 節點上的 Agent(代理),管理本機運行容器的生命周期,比如創建容器、Pod 掛載資料卷、下載 secret、獲取容器和節點狀態等作業
-
kubelet 將每個 Pod 轉換成一組容器
kube-proxy:
-
在 Node 節點上實作 Pod 網路代理
-
維護網路規則和四層負載均衡作業
docker 或 rocket(容器型別):
- 容器引擎
- 運行容器
5.K8s 核心概念
Pod:
- K8s 中最小的部署單元,是一組容器的集合
- 一個 Pod 中的容器共享網路命名空間,像一個小型局域網一樣,所以其中容器之間可以彼此通訊
- Pod 是短暫的,因為其一旦故障,會重新創建新的
- K8s 管理的基本都是業務,而業務都是跑在 Pod 上
Controllers(控制器):
- ReplicaSet:創建資源,確保預期的 Pod 副本數量
- Deployment:無狀態應用部署
- StatefulSet:有狀態應用部署
- DaemonSet:確保所有 Node 運行同一個 Pod,即管理行程資源
- Job:一次性任務
- Cronjob:周期性計劃定時任務
Service: 對外提供服務,防止 Pod 失聯,定義一組 Pod 的訪問策略,方便訪問
Label: 標簽,附加到某個資源上,用于關聯物件、查詢和篩選
Namespaces: 命名空間,將物件邏輯上隔離,用于角色管理和控制
Annotations: 注釋,方便閱讀
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274876.html
標籤:其他
上一篇:回歸測驗和再測驗的區別?
