k8s(1):快速入門


Kubernetes 優勢:

  1. 自動裝箱,水平擴展,自我修復
  2. 服務發現和負載均衡
  3. 自動發布(默認滾動發布模式)和回滾
  4. 集中化配置管理和密鑰管理
  5. 存儲編排
  6. 任務批量運行

 

k8s四組基本概念:

  • Pod/Pod控制器
  • Name/Namespace
  • Label/Label選擇器
  • Service/Ingress

 

Pod :

1、Pod 是K8S里能夠被運行的最小邏輯單元(原子單元) 

2、1個Pod中可以運行多個容器,它們共享 UTS + NET + IPC 名稱空間

3、一個POD可以運行多個容器,又叫:邊車(SideCar)模式

Pod控制器:

Pod控制器是Pod啟動的一種模板,用來保證K8S里啟動的POD始終按照人們預期運行(副本數、生命周期、健康狀態檢查等);

K8S提供了眾多的POD控制器,常用的有以下幾種:

  • Deployment
  • DaemonSet
  • ReplicaSet
  • StatefulSet
  • Job
  • Cronjob

 

Name:

1、由於K8S內部,使用“資源”來定義每一種邏輯概念(功能),故每種“資源”,都應該有自己的“名稱”;

2、“資源”有:api版本(apiVersion),類別(kind),元數據(metadata),定義清單(spec),狀態(status)等配置信息;

3、“名稱”通常定義在“資源”的“元數據”信息里。

Namespace:

1、隨着項目、人員的增多和集群規模的擴大,需要一種能夠隔離K8S內各種“資源”的方法,這就是名稱空間;

2、名稱空間可以理解為K8S內部的虛擬集群組;

3、不同名稱空間內的“資源”,名稱可以相同,相同名稱空間內的同種“資源”,“名稱”不能相同;

4、合理的使用K8S名稱空間,使得集群管理員能夠更好的對交付到k8S里的服務進行分類管理和瀏覽;

5、K8S里默認的名稱空間有: default、kube-system、kube-public;

6、查詢K8S里特定“資源”要帶上相應的名稱空間。

 

Lable:

1、標簽是K8S特色的管理方式,便於分類管理資源對象;

2、一個標簽可以對應多個資源,一個資源也可以有多個標簽,它們是多對多的關系;

3、一個資源擁有多個標簽,可以實現不同維度的管理;

4、標簽的組成:key=value

5、與標簽類似,還有一種“注釋”(annotation)

Lable選擇器:

1、給資源打卡標簽后,可以使用標簽選擇器過濾指定的標簽;

2、標簽選擇器目前有兩個:基於等值關系(等於、不等於)和基於集合關系(屬於、不屬於、存在);

3、許多資源支持內嵌標簽選擇器字段:

  matchLables

  matchExpressions

 

Service:

1、在K8S的世界里,雖然每個POD都會分配一個單獨的IP地址,但這個IP地址會隨着POD的銷毀而消失;

2、Service(服務)就是用來解決這個問題的核心概念;

3、一個Service可以看作一組提供相同服務的POD的對外訪問接口;

4、Service 作用於哪些POD是通過標簽選擇器來定義的。

Ingress:

1、Ingress是K8S 集群里工作在OSI網絡模型下,第7層的應用,對外暴露的接口;

2、Service只能進行L4流量調度,表現形式是 ip + port;

3、Ingress 則可以調度不同業務域、不同URL訪問路徑的業務流量。

 

核心組件

核心組件包括:

配置存儲中心 -> etcd 服務;

主控(master)節點;

  • kube-apiserver 服務
  • kube-controller-manager 服務
  • kube-scheduler 服務

運算(node)節點:

  • kube-kubelet 服務
  • kube-proxy 服務

 

apiserver 服務的作用:

1、提供了集群管理的REST API接口(包括鑒權、數據校驗及集群狀態變更);

2、負責其他模塊之間的數據交互,承擔通信樞紐功能;

3、資源配額的入口;

4、提供完備的集群安全機制。

controller-manager服務:由一系列控制器組成,通過 apiserver 監控整個集群的狀態,並確保集群處於預期的工作狀態;包括有:Node Controller,Deployment  Controller,Service Controller, Volume Controller, Endpoint  Controller,Garbage Controller, Namespace Controller, Job Controller, Resource quta  Controller 等。

scheduler 服務:主要功能是接收調度pod適合的運算節點上;預算策略(predict); 優先策略(priorities) 

kubelet 服務:

  1、簡單來說,kubelet 的主要功能就是定時從某個地方獲取節點上POD的期望狀態(運行什么容器、運行的副本數量、網絡或者存儲如何配置等等),並調用對應的容器平台接口達到這個狀態;

  2、定時匯報當前結點的狀態給 apiserver,以供調度的時候使用;

  3、鏡像和容器的清理工作,保證節點上鏡像不會占滿磁盤空間,退出的容器不會占用太多資源。

kube-proxy 服務:

  1、是K8S在每個節點上運行網絡的代理,service資源的載體;

  2、建立了POD網絡和集群網絡的關系(cluster ip -> pod ip);

  3、常用三種流量調度模式:Userspace(廢棄)、 Iptables(瀕臨廢棄)、 Ipvs(推薦);

  4、負責建立和刪除包括更新調度規則、通知 apiserver 自己的更新、或者從 apiserver 那里獲取其它 kube-proxy 的調度規則變化來更新自己。

 

k8s 三條網絡示意圖:

節點網絡就是運算節點宿主機網絡;所有的pod網絡都是從宿主機上 NAT 出來的;kube-proxy 把 pod 網絡和 service 網絡連接了起來,注意:service 網絡是一個虛的網絡

 

k8s 邏輯架構圖:

 

CLI客戶端

k8s的客戶端為 kubectl

 

核心附件

核心附件包括:

CNI網絡插件 -> flannel/calico

服務發現插件 -> coredns

服務暴露插件 -> traefik

GUI管理插件 -> Dashboard

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM