K8s簡介之什么是K8s
譯文1.概述
歡迎來到K8s入門課程。Kubernetes,也被稱為K8s或Kube,是谷歌推出的業界最受歡迎的容器編排器。本K8s教程由一系列關于K8s的文章組成。在第一部分,我們將討論什么是K8s和K8s的基本概念。
本課程是專為初學者開設的,你可以零基礎學習這項技術。我們將帶你了解全部K8s的基礎知識,幫你理解這些概念。
在開始學習K8s之前,讓我們對容器引擎和容器有一個基本的了解。
2.什么是容器引擎?
容器引擎允許你綁定和運行一個應用在一個容器里,這是一個松散隔離的環境。由于隔離性和安全性,你可以在一臺主機上操作多個容器。
容器引擎利用了操作系統的內核資源隔離特性,可以在同一個操作系統上運行多個容器。人們通常把容器引擎比作虛擬機(VMs)。
另一方面,虛擬機利用物理硬件資源抽象層之上可執行代碼封裝了整個操作系統。
3.什么是容器?
一個容器鏡像是一個可運行的軟件包,其中包含了一個完整的可執行程序,包括代碼和運行時需要應用、系統庫和全部重要設置的默認值。
應用程序通過使用容器與底層的宿主機架構解耦。如下圖所示,我們可以利用底層機器在容器引擎之上運行多個容器。這促進了容器在各種操作系統和云場景中的部署。
容器通過容易擴展和部署應用程序的特性幫助企業實現現代化。然而,重新建立一個全新的基礎環境,容器也帶來了額外的問題和復雜性。
每天有數千個容器實例被大型和小型軟件組織部署,這給他們的管理帶來了持續增長的挑戰。那么,他們是如何做到的呢?
4.什么是容器編排?
容器編排與容器的生命周期管理相關,特別是在大型動態環境中。軟件團隊用容器編排器來控制和自動化容器管理的各種任務。
容器編排器可以工作在使用容器的任何環境。它可以幫助你在多個環境中部署相同的程序,而不需要重新編寫它。
5.容器編排工具
容器編排技術提供了一個控制容器和微服架構的框架。容器生命周期管理可以通過各種容器編排器解決方案來實現,Kubernetes、Docker Swarm和Apache Mesos是三種常見的解決方案/編排工具。
Docker Swarm是Docker原生工具,非常容易安裝和配置。K8s需要大量手工干預來配置其組件,例如 etcd、flannel 和 docker 引擎。
與其他工具相比,K8s憑借其各種優勢和功能特性在行業占據主導地位。
6.什么是K8s?
K8s是一個最初由Google開發的,用于自動化部署、擴展和管理容器化應用的開源容器編排器技術。
K8s使部署和管理微服務架構應用程序變得很簡單。它通過在集群之上形成一個抽象層來實現這一點,允許開發團隊平滑地部署應用程序,而 K8s主要處理以下任務:
- 控制和管理應用程序對資源的使用
- 自動負載均衡應用程序的多個實例之間請求
- 監控資源使用和資源限制,為了可以自動阻止應用消耗過多的資源并且可以再次恢復它們
- 如果主機資源耗盡或主機死機,將應用程序實例從一臺主機遷移到另一臺主機是一個可行的選項
- 當有新的主機加入集群時,新增加的額外資源可以被自動使用
7.為什么市場推薦K8s
K8s是第一個由云原生計算基金會(Cloud Native Computing Foundation, CNCF)和谷歌基金會倡議的項目,是繼Linux之后增長最快的開源軟件項目。
為什么現在有很多企業依賴K8s來滿足他們的容器編排需求? 原因有很多:
- 可移植性和靈活性:K8s有很強的兼容性,因為它可以在各種基礎設施和環境設置下運行。大多數其他編排器沒有這種靈活性。它們被鎖定在特定的運行時或基礎架構中。
- 開源:CNCF負責管理K8s,這是一個完全開源、由社區驅動的項目。它有許多重要的企業贊助商,但沒有一家公司能“控制”這個平臺或者控制它的發展方向。
- 多云兼容性:K8s不但可以將工作負載托管在單個云上,而且可以將工作負載分布在多個云上。 K8s也能輕松地將其環境從一個云擴展到另一個云。雖然其它編排器也能支持多云架構,但K8s在多云兼容性性方面可以完全超越它們。
- 市場領導者:大部分公司都在使用K8s。根據紅帽公司的一項調查,K8s被客戶廣泛使用 (88%),尤其在生產環境中(74%)。
8.K8s架構
K8s是一個架構良好的分布式系統的例子。它將集群中的所有機器都視為單個資源池的一部分。
K8s與其他成熟的分布式系統一樣,有兩層:頭節點和工作節點。
頭節點或主節點由控制面和工作節點應用程序組成。一個K8s集群由許多頭節點和工作節點組成。
K8s引入了很多術語來描述應用程序的結構。 我們將帶大家學習每個術語。
9.K8s組件
頭節點/主節點和工作節點由它自己的組件組成,可以確保編排器穩定地運行。
控制平面
控制平面是管理員和用戶管理不同節點的地方。它通過HTTP調用接收命令或者連接到系統并且運行命令行腳本。顧名思義,它控制了K8s與應用程序的交互方式。
API 服務器
API 服務器為K8s集群提供了一個REST接口。 所有在pod上激活的服務和別的對象都是可以用可編程的方式與與終端進行交互。
調度器
調度器負責將任務分配給各個節點。它監控資源容量并保證工作節點的性能保持在可接受的范圍內。
控制器管理器
K8s控制器管理器是管理K8s核心控制循環的服務。它負責確保集群的共享狀態正常運行。
Etcd
K8s使用了Etcd,一個提供分布式鍵值存儲的數據庫,用來共享集群的整體狀態的信息。
節點
節點是運行了pod的物理機或虛擬機。控制平面管理集群中的每個節點,該節點包含運行 pod所需的服務。
Pods
K8s pod 是K8s管理容器集的最小單位。 每個pod有一個分配給pod中的所有容器的單獨的IP 地址。在pod中的容器內存和存儲資源是共享的。當應用程序只有一個進程時,pod 也可以有一個容器。
Kubelet
Kubelet是一個工作節點組件。它的任務是跟蹤pod及其容器的運行狀態。它與pod的YAML 或JSON描述文件相關。Kubelet檢查 pod 規格并確定 pod 是否健康。
Kube代理
Kube代理是一個網絡代理和負載均衡器,充當每個節點和API服務器之間的連接。它在集群中的每個節點上運行,并允許你從內部和外部連接到pod。
Kubectl
Kubectl是K8s的命令行工具。它用于部署應用程序、監控和控制集群資源以及查看日志。
從用戶的角度來看,Kubectl 是你的K8s的控制面板。它使你能夠執行所有K8s操作。從技術角度來看,Kubectl 是K8s API的客戶端。
結論
在本文中,我們已經了解了容器編排的基本概念和K8s的架構。在我們即將發表的文章中,我們將了解K8s的重要關鍵特性和單節點K8s安裝。
譯者介紹
范曉波,51CTO社區編輯,資深網絡安全工程師。精通SDN、SD-WAN、VPN、NFV等網絡相關技術。精通二三層網絡轉發。熟悉DPDK、VPP、OVS高性能網絡開源框架。喜歡打羽毛球、烹飪美食。
原文標題:??Introduction to Kubernetes | What is Kubernetes??,作者:M.S.M. Sivam