物聯網學習日記8

1.K8S中的Label
解析:使用Label可以給對象創建多組標籤,Label和Label Selector共同構成了K8S系統中最核心的應用模型,使得被管理對象能夠被精細地分組管理,同時實現了整個集羣的高可用性。

2.RC[Replication Controller]
解析:RC是K8S系統中的核心概念之一,它其實是定義了一個期望的場景,即聲明某種Pod的副本數量在任意時刻都符合某個預期值,所以RC的定義包括幾個部分:
[1]Pod期待的副本數[replicas]
[2]用於篩選目標Pod的Label Selector
[3]當Pod的副本數量小於預期數量時,用於創建新Pod的Pod模板[template]

3.RC[Replica Set]特性和作用
解析:
[1]在大多數情況下,通過定義一個RC實現Pod的創建過程及副本數量的自動控制。
[2]RC中包括完整的Pod定義模板。
[3]RC通過Label Selector機制實現對Pod副本的自動控制。
[4]通過改變RC中的Pod副本數量,可以實現Pod的擴容或縮容功能。
[5]通過改變RC中Pod模板中的鏡像版本,可以實現Pod的滾動升級功能。

4.K8S查看名字空間
解析:kubectl get namespaces

5.Namespace[命名空間]
解析:Namespace是K8S系統中的另一個非常重要的概念,Namespace在很多情況下用於實現多租戶的資源隔離。Namespace通過將集羣內部的資源對象分配到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便於不同的分組在共享使用整個集羣的資源的同時還能被分別管理。

6.Annotation
解析:用Annotation來記錄的信息如下所示:
[1]build信息、release信息、Docker鏡像信息等,比如時間戳、release id號、PR號、鏡像hash值、docker register地址等。
[2]日誌庫、監控庫、分析庫等資源庫的地址信息。
[3]程序調試工具信息,比如工具名稱、版本號等。
[4]團隊的聯繫信息,比如電話號碼、負責人名稱、網址等。

7.etcd
解析:etcd是CoreOS團隊於2013年6月發起的開源項目,它的目標是構建一個高可用的分佈式鍵值[key-value]數據庫。etcd內部採用raft協議作爲一致性算法,etcd基於Go語言實現。

8.CentOS關閉防火牆
解析:

systemctl disable firewalld
systemctl stop firewalld

9.禁用SELinux
解析:禁用SELinux讓容器可以讀取主機文件系統[setenforce 0]。或修改系統文件/etc/sysconfig/selinux,將SELINUX=enforcing修改成SELINUX=disabled,然後重啓Linux。

10.靜態Pod
解析:靜態Pod是由kubelet進行管理的僅存在於特定Node上的Pod。它們不能通過API Server進行管理,無法與ReplicationController、Deployment或者DaemonSet進行關聯,並且kubelet也無法對它們進行健康檢查。靜態Pod總是由kubelet進行創建的,並且總是在kubelet所在Node上運行的。創建靜態Pod有兩種方式:配置文件方式和HTTP方式。

11.Controller Manager
解析:Controller Manager作爲集羣內部的管理控制中心,負責集羣內的Node、Pod副本、服務端點[Endpoint]、命名空間[Namespace]、服務賬號[ServiceAccount]、資源定額[ResourceQuota]等的管理,當某個Node意外宕機時,Controller Manager會及時發現此故障並執行自動化修復流程,確保集羣始終處於預期的工作狀態。

12.K8S Scheduler
解析:K8S Scheduler的作用是將待調度的Pod[API新創建的Pod、Controller Manager爲補足副本而創建的Pod等]按照特定的調度算法和調度策略綁定[Binding]到集羣中的某個合適的Node上,並將綁定信息寫入etcd中。在整個調度過程中設計三個對象,分別是:帶調度Pod列表、可用Node列表,以及調度算法和策略。簡單來說,就是通過調度算法調度爲待調度Pod列表的每個Pod從Node列表中選擇一個最合適的Node。

13.K8S高可用性
解析:
[1]etcd數據存儲的高可用性
[2]K8S Master組件的高可用性

14.K8S Dashboard
解析:K8S的Web UI網頁管理工具kubernetes-dashboard,可提供部署應用、資源對象管理、容器日誌查詢、系統監控等常用的集羣管理功能。

15.Helm
解析:Helm是一個由CNCF孵化和管理的項目,用於對需要在K8S上部署的複雜應用進行定義、安裝和更新。Helm以Chart的方式對應用軟件進行描述,可以方便地創建、版本化、共享和發佈複雜的應用軟件。

16.docker [image] inspect命令
解析:使用該命令可以獲取該鏡像的詳細信息,包括製作者、適應架構、各層的數字摘要等。

17.docker history ubuntu: 18. 04
解析:使用history命令查看鏡像文件各層的創建信息。
說明:通常並不推薦使用-f參數來強制刪除一個存在容器依賴的鏡像,正確的做法是先刪除依賴該鏡像的所有容器,再來刪除鏡像。

18.docker image prune
解析:使用該命令來清理鏡像:
[1]-a:刪除所有無用鏡像,不光是臨時鏡像。
[2]-filter:只清理符合給定過濾器的鏡像。
[3]-f:強制刪除鏡像,而不進行提示確認。

19.創建鏡像
解析:創建鏡像的方法主要有三種:基於已有鏡像的容器創建,基於本地模板導入,基於Dockfile創建。

20.基於已有容器創建
解析:該方法主要是使用docker [container] commit命令。主要選項包括:
[1]-a:作者信息。
[2]-c:提交的時候執行Dockerfile指令。
[3]-m:提交消息。
[4]-p:提交時暫停容器運行。

21.OpenVZ
解析:OpenVZ是開源軟件,是基於Linux平臺的操作系統級服務器虛擬化解決方案。OpenVZ採用SWsoft的Virtuozzo虛擬化服務器軟件產品的內核,Virutozzo是SWsoft公司提供的商業虛擬化解決方案。

22.基於本地模板導入
解析:可以直接從一個操作系統模板文件導入一個鏡像,主要使用docker [container] import命令。

23.基於Dockerfile創建
解析:基於Dockerfile創建時最常見的方式。Dockerfile是一個文本文件,利用給定的指令描述基於父鏡像創建新鏡像的過程。

24.Docker生產環境
解析:在生產環境中,爲了提高容器的高可用性和安全性,一方面要合理使用資源限制參數來管理容器的資源消耗;另一方面要指定合適的容器重啓策略,來自動重啓退出的容器。此外,還可以使用HAProxy等輔助工具來處理負載均衡,自動切換故障的應用容器。

25.容器中的數據管理
解析:容器中的數據管理主要有兩種方式:
[1]數據卷:容器內數據直接映射到本地主機環境。
[2]數據卷容器:使用特定容器維護數據卷。

參考文獻:
[1]精通Docker第三版:https://alanhou.org/docker-compose/
[2]istio技術:https://www.qikqiak.com/istio-book/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章