天天看點

k8s入門系列之介紹篇

•Kubernetes介紹

1.背景介紹

雲計算飛速發展

- IaaS

- PaaS

- SaaS

Docker技術突飛猛進

- 一次建構,到處運作

- 容器的快速輕量

- 完整的生态環境

2.什麼是kubernetes

Kubernetes(k8s)是Google開源的容器叢集管理系統(谷歌内部:Borg)。在Docker技術的 基礎上,為容器化的應用提供部署運作、資源排程、服務發現和動态伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。

Kubernetes優勢:

- 容器編排

- 輕量級

- 開源

- 彈性伸縮

- 負載均衡

•Kubernetes的核心概念

1.Pod

運作于Node節點上,若幹相關容器的組合。Pod内包含的容器運作在同一主控端上,使用相同的網絡命名空間、IP位址和端口,能夠通過localhost進行通。Pod是Kurbernetes進行建立、排程和管理的最小機關,它提供了比容器更高層次的抽象,使得部署和管理更加靈活。一個Pod可以包含一個容器或者多個相關容器。

2.Replication Controller

Replication Controller用來管理Pod的副本,保證叢集中存在指定數量的Pod副本。叢集中副本的數量大于指定數量,則會停止指定數量之外的多餘容器數量,反之,則會啟動少于指定數量個數的容器,保證數量不變。Replication Controller是實作彈性伸縮、動态擴容和滾動更新的核心。

3.Service

Service定義了Pod的邏輯集合和通路該集合的政策,是真實服務的抽象。Service提供了一個統一的服務通路入口以及服務代理和發現機制,使用者不需要了解背景Pod是如何運作。

4.Label

Kubernetes中的任意API對象都是通過Label進行辨別,Label的實質是一系列的K/V鍵值對。Label是Replication Controller和Service運作的基礎,二者通過Label來進行關聯Node上運作的Pod。

5.Node

Node是Kubernetes叢集架構中運作Pod的服務節點(亦叫agent或minion)。Node是Kubernetes叢集操作的單元,用來承載被配置設定Pod的運作,是Pod運作的主控端。

•Kubernetes架構群組件

架構:

k8s入門系列之介紹篇

主從分布式架構,Master/Node

- 服務分組,小叢集,多叢集

- 服務分組,大叢集,單叢集

元件:

Kubernetes Master控制元件,排程管理整個系統(叢集),包含如下元件:

1.Kubernetes API Server

作為Kubernetes系統的入口,其封裝了核心對象的增删改查操作,以RESTful API接口方式提供給外部客戶和内部元件調用。維護的REST對象持久化到Etcd中存儲。

2.Kubernetes Scheduler

為建立立的Pod進行節點(node)選擇(即配置設定機器),負責叢集的資源排程。元件抽離,可以友善替換成其他排程器。

3.Kubernetes Controller

負責執行各種控制器,目前已經提供了很多控制器來保證Kubernetes的正常運作。

   - Replication Controller

管理維護Replication Controller,關聯Replication Controller和Pod,保證Replication Controller定義的副本數量與實際運作Pod數量一緻。

- Node Controller

管理維護Node,定期檢查Node的健康狀态,辨別出(失效|未失效)的Node節點。

- Namespace Controller

管理維護Namespace,定期清理無效的Namespace,包括Namesapce下的API對象,比如Pod、Service等。

- Service Controller

管理維護Service,提供負載以及服務代理。

- EndPoints Controller

管理維護Endpoints,關聯Service和Pod,建立Endpoints為Service的後端,當Pod發生變化時,實時更新Endpoints。

- Service Account Controller

管理維護Service Account,為每個Namespace建立預設的Service Account,同時為Service Account建立Service Account Secret。

- Persistent Volume Controller

管理維護Persistent Volume和Persistent Volume Claim,為新的Persistent Volume Claim配置設定Persistent Volume進行綁定,為釋放的Persistent Volume執行清理回收。

- Daemon Set Controller

管理維護Daemon Set,負責建立Daemon Pod,保證指定的Node上正常的運作Daemon Pod。

- Deployment Controller

管理維護Deployment,關聯Deployment和Replication Controller,保證運作指定數量的Pod。當Deployment更新時,控制實作Replication Controller和 Pod的更新。

- Job Controller

管理維護Job,為Jod建立一次性任務Pod,保證完成Job指定完成的任務數目

- Pod Autoscaler Controller

實作Pod的自動伸縮,定時擷取監控資料,進行政策比對,當滿足條件時執行Pod的伸縮動作。

Kubernetes Node運作節點,運作管理業務容器,包含如下元件:

1.Kubelet

負責管控容器,Kubelet會從Kubernetes API Server接收Pod的建立請求,啟動和停止容器,監控容器運作狀态并彙報給Kubernetes API Server。

2.Kubernetes Proxy

負責為Pod建立代理服務,Kubernetes Proxy會從Kubernetes API Server擷取所有的Service資訊,并根據Service的資訊建立代理服務,實作Service到Pod的請求路由和轉發,進而實作Kubernetes層級的虛拟轉發網絡。

3.Docker

Node上需要運作容器服務。

本文轉自開源中國-

k8s入門系列之介紹篇