Kubernetes (簡稱k8s)近兩年大火,如果你是一名雲計算從業者,或者運維人員,還不了解kubernetes 的話那你已經OUT了。
為了幫更多朋友了解容器技術,了解kubernetes,本周三我們在【光環雲社群】做了一次kubernetes的入門講座。直播開始前,分享嘉賓——資深運維陳鐸、鐸哥告訴我:我想好了,這次我就要把kubernetes掰開了揉碎了,講到產品和運營人員都能聽懂。
全程聽下來,鐸哥做到了。從什麼是虛擬化、什麼是容器、容器和虛擬化什麼關係、docker和kubernetes什麼關係,學習和使用kubernetes要搜索和關注哪些關鍵詞,都講得明明白白。
這次直播的標題是《探秘kubernetes——從基礎到實踐》,我知道很多朋友還沒來得及聽,沒關係,以下我們為您整理了本次直播的文字版精華回顧:
Kubernetes 是什麼
官方定義是,Kubernetes是用於自動部署、擴展和容器化應用程式的開源系統。
而我們要了解究竟什麼是Kubernetes,首先要明白容器的概念,以及Docker是什麼。
容器:
容器是一種虛擬化技術。
我們知道,在傳統的伺服器使用中,伺服器物理資源存在較大的浪費。虛擬化技術就是為了避免這種浪費而產生的技術。下圖展示了從虛擬化技術,到容器技術的發展史。
我們可以看到,容器技術不是憑空產生的,而是經歷了漫長的演變過程。了解了這種演變,了解了容器技術為解決什麼問題而誕生,你就不會對容器技術望而生畏了。
容器技術最早應用在Linux作業系統,稱為Linux Container(LXC),早期在網際網路公司開始使用部署分布式應用,隨後隨著容器管理器(Docker、Rocket和CloudFoundary Garden)興起,定製容器宿主作業系統(CoreOS、Ubuntu Snappy、Red Hat Atomic)盛行,容器被有效構建和管理、並在各行各業普遍使用和認可。
容器技術的官方定義是:
容器是通過一種虛擬化技術來隔離運行在主機上不同進程,從而達到進程之間、進程和宿主作業系統相互隔離、互不影響的技術。
要理解這個定義,首先要弄清楚容器和虛擬機的區別。
簡單來說,虛擬機是一個機器,但容器是一個進程。
每一個虛擬機裡面都有一套完整的作業系統,而容器層安裝在作業系統之上,它直接利用了宿主機的內核,更加輕量化,啟動速度極快。通常,我們在會每個容器裡面跑單個的應用,而在虛擬機裡會跑很多應用。下圖展示了虛擬機和容器的不同。
容器技術具有:簡化部署、快速啟動、服務組合、易於遷移等優點。
最流行的開源容器引擎:Docker
談到容器,就不能不講Docker。Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。
Docker把容器變得標準化了。要理解Docker,你需要明白三個最主要的概念:容器、鏡像、倉庫。
- 容器是運行在虛擬機上的進程。
- 鏡像是一種存儲形式,可以理解為數據或應用的副本。
- 倉庫是用來存儲鏡像的。
Docker能夠普遍使用起來,很大程度上個得益於Docker的倉庫裡匯集了很多已經標準化的鏡像,大大提升了部署效率。
什麼是kubernetes
了解了容器和Docker,再來看kubernetes的定義就很容易理解了。
上文提到,Kubernetes是用於自動部署、擴展和容器化應用程式的開源系統。
當我們使用的容器服務多了,面臨的訪問量增大以後,我們就需要一種工具把這些容器統一的管理起來,需要實現對這些容器的自動部署、擴展和管理。也就是俗稱的容器編排。
Kubernetes就是這樣一種容器編排系統。
上圖是Kubernetes的架構圖。
從大的模塊看,圖中包含Master組件(APIs, scheduler, etc),Node節點和cloud端。
Master中,包含負責提供API服務的組件kube-apiserver;作為後臺資料庫的etcd,監聽組件kube-scheduler;運行控制器的組件kube-controller-manager。
Node節點中包括運行在各個節點的客戶端的kubelet,運行在各個節點的網絡代理組件kube-proxy,支持運行容器底層環境的軟體Container Runtime。
Cloud端作為集群外部的附加能力,通過與cloud-controller-manager組件對接,擴展k8s集群雲上動態擴展的特性。
如何上手使用 kubernetes
Kubernetes的安裝
Kubernetes有很多種安裝方法,這裡就不一一介紹了。推薦三種主要的安裝方法,感興趣的朋友可以通過關鍵詞搜索相關教程,按步驟嘗試安裝。如果遇到問題,可以在我們的社群或者Kubernetes中文社區提問。
常見的三種安裝方法:
- Kuberspray
- Kubeadm
- 手動安裝
Kubernetes有哪些優勢
為什麼我們要用Kubernetes?因為它更省錢,更快,更省力。
Kubernetes和Docker都是開源的,這意味著你不需要支付高昂的授權費用;容器服務從啟動到關停,比傳統的伺服器、虛擬機都要快捷很多;管理方面,Kubernetes提供一整套架構,管理方便,節省了運維的人力。
容器技術是未來發展的必然趨勢。如果你從事開發、運維、雲計算相關工作,一定要多多關注容器技術的發展。
幾個與Kubernetes相關的產品/概念
在Kubernetes的生產實踐中,有這幾個產品/概念建議你去了解:
Openshift:OpenShift是由Red Hat開發的容器化軟體解決方案。他們的主要產品是OpenShift容器平臺,這是由Kubernetes管理的平臺即服務(PaaS)。
Amazon EKS:Amazon Elastic Kubernetes Service (Amazon EKS) ,這是一項完全託管的 Kubernetes 服務。EKS擁有原生的kubernetes體驗,並與AWS其他的雲服務無縫的結合,為用戶提供極佳的雲端容器體驗。下期直播我們會著重介紹這個產品。
微服務:由於容器技術的發展,微服務的理念也越來越被人們接受。按照微服務的理念,如果使用容器作為基礎設施,能夠實現快速部署,快速迭代。很多時候大家會將微服務和容器技術一起談論,甚至有些公司直接將自己的新建的微服務應用部署在容器平臺上。
如何學習Kubernetes
學習kubernetes,其實官方文檔和github 就用了。最重要的,是你要邊實踐邊學習,遇到不懂的問題,多搜索,多思考,多在社區裡交流。實踐出真知,這也是所有技術學習的不二法門。
以上就是本期kubernetes直播的主要內容了。4月22日,我們將繼續為您分享AWS上的kubernetes——Amazon EKS,敬請期待。搜索「光環雲社群」獲取更多精彩。