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
