Kubenetes 核心概念理解


Kubernetes 是一個具有自動控制 、自動糾錯功能的資源管理系統

  可以把 Node , Pod , Replication Controller , Service 等都看做是一種 "資源對象"

  通過Kubernetes提供的 kubectl 工具  or API編程調用 對這些資源對象進行 增、刪、改、查 等操作 並將其在 etcd 中持久化存儲

  Kubernetes 其實是一個高度自動化的資源控制系統,它通過跟蹤對比etcd庫里保存的“資源期望狀態” 與 當前環境中的“實際資源狀態”的差異

  來實現自動控制和自動糾錯的高級功能。

 

---------------------------------------------------

Master

  負責整個集群的管理和控制

  kube-apiserver

  kube-controller-manager

  kube-scheduler

Etcd

-------------------------------------------------------

Node

  kubelet

  kube-proxy

  Docker Engine

-------------------------------------------------------

Label

  相當於標簽

  通過

------------------------------------------------------

Deployment

  deployment 和 RC 的相似度超過90%

  可以隨時知道當前Pod "部署"的進度

----------------------------------------------------------

Service

  對應於微服務架構中的一個"微服務"

 ------------------------------------------------------------------------------------------------------

  Volume (存儲卷)

volume是pod中能夠被多個容器訪問的共享目錄

volume定義在Pod上,然后被一個Pod里的多個容器掛載到具體的目錄下

volume與Pod的生命周期相同,但與容器的生命周期不相關,當容器終止或者重啟時,volume中的數據也不會丟失。

Kubernetes支持 GlusterFS 、Ceph等先進的分布式文件系統.

volume類型

1,emptyDir

  emptyDir Volume是在Pod分配到Node時創建的。初始內容為空,無需指定宿主機上對應的目錄文件,因為這是kubernetes自動分配的一    個目錄,當Pod從Node上移除時,emptyDir中的數據也會被永久刪除。

2,hostPath

  hostPath是在Pod上掛載宿主機上的文件或目錄

  適用場景:(1) 容器應用程序生成的日志文件需要永久保存時,可以使用宿主機的高速文件系統存儲

    (2)需要訪問宿主機上Docker引擎內部數據結構的容器應用時,可以通過定義hostPath為宿主機/var/lib/docker 目錄

                     ,使容器內部應用可以直接訪問Docker的文件系統

3,gcePersistentDisk

  google公有雲提供的永久磁盤

 

4,awsElasticBlockStore

          亞馬遜的公有雲提供的EBS Volume

 

5, NFS

  volumes:

   - name: nfs

             server:  nfs-server.localhost

              path: "/ "

其他

---------------------------------------------------------------------------

Persistent Volume

  PV 可以理解成 Kubernetes 集群中的某個網絡存儲中對應的一塊存儲

  PV 只能是網絡存儲,不屬於任何Node,但可以在每個Node上訪問

  PV 並不是定義在Pod上的,而是獨立於Pod之外定義

  PV 目前只有幾種類型: GCE Persistent Disks , NFS , RBD , iSCSCI , AWS ElasticBlockStore ,Gluster FS

PV 的 accessMode屬性:

  ReadWriteOnce: 讀寫權限,並且只能被單個Node 掛載

  ReadOnlyMany: 只讀權限,允許被多個Node掛載

  ReadWriteMany: 讀寫權限,允許被多個Node掛載

 

PVC

  如果某個Pod想申請某種條件的PV,則首先要定義一個PersistentVolumeClaim(PVC)對象

 

PV是有狀態的對象,有以下幾種狀態:

Availabel: 空閑狀態

Bound: 已經綁定到某個PVC上

Released: 對應的PVC已經刪除,但資源還沒有被收回

Failed: PV自動回收失敗。

 ----------------------------------------------------------------

Namespace

Namespace在很多情況下用於   實現多租戶的資源隔離。

Namespace通過將集群內部的資源對象 “分配” 到不同的Namespace 中,形成邏輯上分組的不同項目、小組或用戶組,便於不同的分組在共享使用整個集群的資源同時還能被分別管理。

kubectl get namespaces

如果不特別指明namespace ,則用戶創建的Pod , RC , Service 將都被系統創建到default的namespace中。

kubectl get pods --namespace=development

 


免責聲明!

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



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