k8s實戰 1----初識

王若伊_恩赐解脱發表於2024-06-13

什麼是k8s?
k8s是谷歌開源的一套完整的容器管理平臺,方便我們直接管理容器應用。
谷歌稱之為,kubernetes,[kubə’netis] ,(跟我一起讀庫波爾耐題思,重音在耐的音上),由於字母太多,我們簡稱為k8s,8代表k-->s之間的8個字母。
kubernetes 譯為舵手,標識是一個航海舵。而容器直譯為集裝箱,也就是舵手在管理容器的意思。

為什麼要做出來k8s,換句話說它有什麼用?
還記得我前邊講的,為了遮蔽硬體之間的差異,減輕虛擬技術的負擔,容器化技術在docker的帶領下大行其道。越來越多的公司採用容器進行部署和交付。
但是隨著業務的複雜化,容器可能成百上千,甚至不同容器對硬體的要求也越來越複雜,此時我們就需要一套完整的管理軟體(平臺),(防盜連線:本文首發自http://www.cnblogs.com/jilodream/ )來管理這些容器,如何部署,怎麼部署
怎麼銷燬等等。k8s就是這樣一套平臺,同時與之對齊的還有docker 官方推出的docker swarm工具。但是由於市場和效能等原因,越來越多的公司選擇k8s來管理容器。
除了能管理容器,k8s 還提供了一套完整的管理服務,安全的機制。這就讓k8s同時擁有分散式、叢集的一些處理能力。很多公司以此來分擔spring cloud等分散式架構的能力。
接下來看一下k8s架構:

如圖,k8s將主機稱之為節點Node,節點又分為兩種。主節點master,從節點Node。
主節點master主要提供資源的管理、控制。從節點Node用來儲存各種資源資訊。
主節點中包含:
kubectl :我們透過kubectl來控制使用k8s。
api server:核心元件、提供資源操作入口、認證、授權訪問、api註冊等能力。
scheduler:負責資源的排程。
controller manager:維護叢集狀態,如故障檢測、自動擴充套件、滾動更新等。
etcd:分散式資料庫,用來儲存狀態。
從節點包含:
kubelet:負責管理pod以及容器。
container runtime: 提供映象管理和容器的執行時環境。
kubeproxy: 負責網路代理和負載均衡。

以上聽起來有一些晦澀,不過不要緊,作為開發人員基本上用不到,這裡只要有一個大概的印象就可以:
1、使用者透過kubectl 來管理容器資源(防盜連線:本文首發自http://www.cnblogs.com/jilodream/ )
2、kubectl將收到的訴求發給至api server
3、api server分析收到的訴求,結合scheduler、etcd提供的資訊,將命令傳送到指定節點的kubelet中。
4、kubelet 根據收到的命令,處理相應節點中的pod。

這裡提到了一個pod的概念:
什麼是pod?pod就是一組容器,k8s是以pod為單位來操作容器的,我會在後邊的文章中詳細介紹。