白話K8s-Kubernetes基本概念

PS: 以下都是博主的自學筆記 + 個人理解的概括,很抱歉沒有準備圖文形式描述,歡迎大家提問交流。

通過簡要的語言,概括總結Kubernetes的基本概念;更通俗的理解kubernetes的各個基本概念。
比如: 什麼是k8s? 什麼是容器?什麼是pod? deployment又是做什麼的? 等等。

一、 什麼是 Kubernetes?

Kubernetes是一個開源容器編排平臺,可自動執行應用程序的部署,管理和擴展。

簡述: k8s是一個容器編排平臺, kubernetes大大簡化微服務的開發和部署。

比喻: 就像一個精裝修的商品房,拎包入住即可

二、Kubernetes基本概念

2.1 容器: 輕量級的虛擬化技術

(從宿主機操作系統視角來看,容器其實是一個個進程;
從容器內部視角來看,是個完整的操作系統,有自己的網絡,CPU)

2.2 POD(豌豆莢):

kubernetes沒有直接調度容器,而是在外面包了一層-POD, POD是k8s基本的調度單位;

POD 可以跑一個或多個容器,共享POD 文件系統和網絡,每個POD有獨立的IP,容器共享POD的IP和端口空間

POD 裏的容器可以通過 localhost 互相訪問(一般一個POD只跑一個容器)

PS: 爲什麼K8S沒有直接調度DOCKER容器,而是用POD包了一層?
答: 一個原因是考慮了需要輔助容器的場景,如:sidecar這種;另一個原因考慮了可以替換使用不同的容器技術;

2.3 副本集 ReplicaSet

我們一般不會只部署一個POD, 會部署多個POD實例,來實現HA(High Available,高可用);

ReplicaSet就是和一個應用的一組POD相對應的概念,是一種基本的發佈機制,可以實現基本的發佈;

通過模板(yaml,json)來規範摸個應用的容器鏡像,端口、副本數量,點火、健康檢查機制,Volumn掛載,環境變量等等相關信息

運行時,replicaset會監控,維護POD數量;多了就減少,少了就增加;

2.4 服務 Service

Service 是服務間相互路由、尋址的概念;

Service 屏蔽了應用的IP尋址和負載均衡這些細節,消費方可以直接通過服務名訪問目標服務;

Service 底層機制會做尋址和負載均衡,即使應用Pod的IP地址發生了變更,Service 也會屏蔽這種變更,讓消費方無感知;

2.5 Deployment

我們發佈微服務時候,定義的所書寫的定義發佈描述文件(主要是YAML 或者JSON),主要就是 service 和 deployment規範

ReplicaSet實現了基礎的發佈,Deployment在 ReplicaSet基礎上實現高級發佈,是一種更靈活的發佈機制。

簡述: Deployment是用來管理 ReplicaSet,實現藍綠、滾動這些高級發佈機制的。

發佈的應用的時候,Deployment 會創建 replicaSet文件, replicaSet根據規範,創建應用的POD實例,並維護和保證實例的數量

升級的時候,會創建新的relicaSet調度實現滾動發佈,也是先發布回退這些功能

2.6 ConfigMap/Secret

ConfigMap是 Kubenetes的一種資源,開發人員將配置填寫到ConfigMap中;

ConfigMap支持以環境變量的方式寫入到Pod當中,Pod中的應用就可以通過環境變量的方式去訪問到配置
也支持以volume(持久卷)方式 amount Pod當中,Pod中應用就可以以本地配置文件的方式訪問到配置

K8 通過Secrete 概念支持敏感數據的配置;
Secret 是一種特殊的Config,提供更安全的存儲,訪問配置的機制。

2.7 DaemonSet

(如: 監控場景)
通過DaemonSet 可以在每個work節點上部署一個守護進程Pod, 並且保證每個節點上有且僅有一個守護Pod;

2.8 volume

存儲卷,理解爲磁盤文件存儲, POD銷燬,volume也銷燬,不過支持

2.9 label

標籤 是附加到 Kubernetes 對象(比如 Pods)上的鍵值對。

"metadata": {
  "labels": {
    "release" : "stable",
    "environment" : "dev",
    "partition" : "customerA"
  }
}

2.10 選擇器

通過 標籤選擇器,客戶端/用戶可以識別一組對象。標籤選擇器是 Kubernetes 中的核心分組原語。

通過選擇器找到我們想要對象。 如:`kubectl get pod -l “app:jdsf-demo”

一些 Kubernetes 對象,例如 services 和 replicationcontrollers ,也使用了標籤選擇器去指定了其他資源的集合,例如 pods。

service 和 Replicate 通過標籤選擇器找到指定的資源。 如 service 通過標籤選擇代理器找到代理的pod, 並負載他們。

#service.yaml
spec:
  selector:
    app: jdsf-default-app # 應用名稱
---
# rs.yaml

spec:
  replicas: 1
  selector:
    matchLabels:
      app: jdsf-defult-app # 應用名稱

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