好,現在開始跟大家一起學習 Kubernetes ,本系列文章不會有什麼安排,起點就是,我學什麼我就向你們分享什麼,期望大家對這門目前比較主流的技術有一定的瞭解,以及一定的動手能力,給我自己掃掃盲,也給大家掃掃盲。
主要知識來源:
極客時間專欄《深入剖析 Kubernetes》
書籍《Kubernetes權威指南》
官網 https://kubernetes.io
Kubernetes,全名還是有點長的,業界縮寫是 k8s,後續我也用k8s來代替全名。
關於k8s,官方的介紹是這樣的
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
k8s是一個提供 自動化部署、自動化擴縮容以及管理容器化應用的開源系統。
怎麼理解呢?就是首先,k8s 是開源的,這事毋庸置疑的。其次呢,k8s 管理的對象是 容器化的應用,也就是說普通的非容器化的應用它不管。第三呢,它提供了 自動化部署和自動化擴縮容 的能力。
這三條合起來,可以實現一個普遍的現有系統自動化運維能力。
至於爲什麼用容器來作爲運行基礎,每個人有每個人的看法,我的看法比較勢利,就是爲了提高資源利用率,人和機器利用率,主要是機器。
直接部署在物理主機上或者雲主機上是這樣的,所有 App 公用操作系統以及硬件資源,各個App間可能互相影響,無法隔離,這確實是資源利用最高效的方式。
虛擬機部署方式是這樣的,好處是各個應用隔離非常徹底,缺點就是都要在主機操作系統上,跑多一層操作系統,資源浪費比較嚴重。
容器化部署是這樣的,好處就是App間隔離非常好,公用底層操作系統資源利用率蠻高,每個App都有自己的環境和資源分配。目前比較主流的開源容器技術有兩,一是 Docker,二是Rocket。(小提問,Docker需要我來講嗎?)
總得來說,k8s選擇容器技術作爲最基礎運行單位,有着一定的考慮,比較重點的原因是容器技術可以做到 App 間隔離,以及相對於虛擬機的資源利用率。但是還有更加核心的一點,就是容器鏡像。
有了容器鏡像,開發者在本地運行的環境,跟放在服務端運行的環境可以保持 幾乎 100% 一致,本地的表現是怎樣的,打包成鏡像後在服務端運行的表現就是怎樣的。另外一方面,因爲鏡像很標準包含了應用所需的所有環境,應用可以在調度下,非常非常方便地進行水平擴容和縮容。
好了今天就聊到這,說一下今天學習的重點。
1、嘮嗑。
2、k8s 是使用 yaml 文件來定義資源的,yaml 的語法要點有3個。
- key: value 對,使用英文冒號:分割,後加一個空格。
- 使用兩個空格作層級
- 使用 - 代表接下來要出現一個List列表了。
就這樣,沒了,比如這樣定義。
爸爸: 大蕉
孩子:
- 兒子: 小蕉
- 女兒: 小小蕉
end