k8s概念

k8s中大部分概念如node/pod等均可以看作資源對象,k8s實際上是一個高度自動化的資源控制系統,經過跟蹤比對etcd裏的資源指望狀態和當前環境裏的
實際資源狀態差別來實現自動控制和自動糾錯的高級功能。
在Kubernetes中建立對象時,必須提供描述其所需Status的對象Spec,以及關於對象(如name)的一些基本信息。k8s對象示例必填字段:apiVersion 、kind 、metadata及對象Spec,spec是容器組的定義。順便提下k8s的Events概念,它是一個事件的記錄,記錄了事件的最先產生時間、最後重現時間等衆多信息。node

Kubernetes集羣的兩種類型資源
Master節點:協調控制整個集羣。
Nodes節點:運行應用的工做節點。
1. Master組件負責整個集羣的管理和控制。基本上全部的控制命令都發給它,命令都是在master節點上運行的,他來負責總體的執行過程,通常獨自佔一臺機器,若是宕機或不可用,那麼對容器應用的控制將失效。
2. kube-apiserver用於暴露Kubernetes API,k8s全部資源增刪改查操做的惟一入口。
3. etcd是Kubernetes提供默認的存儲系統,保存全部集羣數據
4. kube-controller-manager資源對象的自動化控制中心
5. kube-schedule 負責資源調度的進程git

節點(Node)組件
提供Kubernetes運行時環境,以及維護Pod。能夠在運行期間動態增長到k8s集羣中,前提是這個節點已正確安裝api

kubelet負責pod對應容器的建立、啓停等任務,同時與master密切協做,實現集羣管理的基本功能
kube-proxy 實現k8s service的通訊和負載均衡的重要組件
一個Node能夠是VM或物理機。每一個Node都會運行pod的一些必要服務包括Docker、kubelet和kube-proxy,並由Master組件進行管理
–Node Status節點的狀態信息包含:Addresses
Condition 描述全部Running節點的狀態。被表示爲一個JSON對象。
Capacity
Info
–與 pods 和 services 不一樣,node不是由Kubernetes 系統建立,
目前,有三個組件與Kubernetes節點接口進行交互:節點控制器(node controller)、kubelet和kubectl。
–Node是Kubernetes REST API中的最高級別資源。
label Selector
1五、使用label和label Selector能夠給對象建立多組標籤,label和label Selector共同構成了k8s系統中最核心的應用模型,使得被管理對象可以被精細的分組管理,同時實現了整個集羣的高可用性。網絡

namespaces
kubernetes最重要的對象Pod。
Kubernetes REST API中的全部對象都用Name和UID來明確地標識。
Name在一個對象中同一時間只能擁有單個Name,刪除一個namespace會自動刪除全部屬於該namespace的資源。命令行操做NameSpace:負載均衡

kubectl create namespace new-namespace
kubectl create -f ./my-namespace.yaml
kubectl delete namespaces new-namespace
kubectl get namespaces //列出當前羣集中的namespace
1
2
3
4
volume
Kubernetes Volume具備明確的生命週期 - 與pod相同。而Docker的Volume只是磁盤中的一個目錄,生命週期不受管理。
Kubernetes支持Volume類型有:emptyDir、hostPath等,只要Node上的Pod一直運行,Volume就會一直存在。
當Pod(無論任何緣由)從Node上被刪除時,emptyDir也同時會刪除,存儲的數據也將永久刪除。
在同一個pod中的多個容器可以共享pod級別的存儲卷volume。工具

Annotations
Annotations就如標籤同樣,也是由key/value組成:
–構建、發佈的鏡像信息,如時間戳,發行ID,git分支,PR編號,鏡像hashes和注Registry地址。
–一些日誌記錄、監視、分析或audit repositories。
–一些工具信息:例如,名稱、版本和構建信息。
–用戶或工具/系統來源信息,例如來自其餘生態系統組件對象的URL。
–負責人電話/座機,或一些信息目錄。spa

pod
Pod是Kubernetes建立或部署的最小/最簡單的基本單位,一個Pod表明集羣上正在運行的一個進程。
一個Pod封裝一個應用容器(也能夠有多個容器),存儲資源、一個獨立的網絡IP以及管理控制容器運行方式的策略選項。
Pod表明部署的一個單位:Kubernetes中單個應用的實例,它可能由單個容器或多個容器共享組成的資源。有點相似serverrole
–Pod中運行一個容器。「one-container-per-Pod」模式是Kubernetes最多見的用法;
在這種狀況下,你能夠將Pod視爲單個封裝的容器,可是Kubernetes是直接管理Pod而不是容器。
–若是Pods中運行多個須要一塊兒工做的容器。它們之間可以共享資源,在單個Pod中共同管理多個容器是一個相對高級的用法
–每一個Pod被分配一個獨立的IP地址,Pod能夠指定一組共享存儲volumes。
【注意點】重啓Pod中的容器跟重啓Pod不是一回事。Pod只提供容器的運行環境並保持容器的運行狀態,重啓容器不會形成Pod重啓。
kubernetes中,pod大部分場景下只是容器的載體而已,一般須要經過Deployment、RC等對象來完成一組pod的調度和自動控制功能。命令行

replicaSets
官方建議使用Deployment來管理ReplicaSets,這意味着咱們不須要操做ReplicaSet對象,而是使用Deployment管理 。
ReplicaSet(RS)副本集是Replication Controller(RC)的升級版本,用來保證pod的高可用
經過監控運行中的pod來保證集羣中運行指定數量的pod副本,少於指定數目就會根據模板建立,多了就會殺死多餘的pod副本。
replication理解爲複製品、副本
rc實際上是定義了一個指望的場景,包含三個部分:期待的副本數(replicas),用於篩選目標pod的label selector,以及副本數量小於預期數時用於建立新pod的模板日誌

deployment
你只須要在 Deployment 中描述您想要的目標狀態是什麼,Deployment controller 就會幫您將 Pod 和ReplicaSet 的實際狀態改變到您的目標狀態。

server

相關文章
相關標籤/搜索