集群架構與組件
一個kubernetes集群主要是由控制節點(master)、工作節點(node)構成,每個節點上都會安裝不同的組件。
master:集群的控制平面,負責集群的決策 ( 管理 )
api-server : 資源操作的唯一入口,接收用戶輸入的命令,提供認證、授權、API注冊和發現等機制
scheduler : 負責集群資源調度,按照預定的調度策略將Pod調度到相應的node節點上
controller-manager : 負責維護集群的狀態,比如程序部署安排、故障檢測、自動擴展、滾動更新等
etcd :負責存儲集群中各種資源對象的信息
node:集群的數據平面,負責為容器提供運行環境 ( 干活 )
kubelet : 負責維護容器的生命周期,通過控制docker,來創建、更新、銷毀容器
kube-proxy : 負責提供集群內部的服務發現和負載均衡
docker : 負責節點上容器的各種操作

以部署一個nginx服務來說明kubernetes系統各個組件調用關系:
首先要明確,一旦kubernetes環境啟動之后,master和node都會將自身的信息存儲到etcd數據庫中
一個nqinx服務的安裝請求會首先被發送到master節點的api-server組件
api-server組件會調用scheduler組件來決定到底應該把這個服務安裝到哪個node節點上
scheduler從etcd中讀取各個node節點的信息,按照一定的算法進行選擇,并將結果告知api-server
aapi-server調用controller-manager來調度node節點安裝nginx服務
kubelet接收到指令后,會通知docker,然后由docker來啟動一個nginx的pod(pod是kubernetes的最小操作單元,容器必須跑在pod中)
一個nginx服務就運行了,如果需要訪問nginx,就需要通過kube-proxy來對pod產生訪問的代理
這樣,外界用戶就可以訪問集群中的nginx服務了

資源的分類

元數據級
Horizontal Pod Autoscaler(HPA)
PodTemplate
LimitRange
集群級
Namespace
Node
ClusterRole
ClusterRoleBinding
命名空間級
工作負載型 Pod
Pod(容器組)是Kubernetes 中最小的可部署單元。一個 Pod容器組包含了一個應用程序容器(某些情況下是多個容器)、存儲資源、一個唯一的網絡 P 地址、以及一些確定容器如何運行的選項。Pod 容器組代表了 Kubernetes 中一個獨立的應用程序運行實例,該實例可能由單個容器或者幾個緊耦合在起的容器組成。Docker是Kubernetes Pod 中使用最廣泛的容器引擎。Kubernetes Pod 同時也支持其他類型的容器引擎。Kubernetes集群中的 Pod 存在如下兩種使用途徑:
一個 Pod 中只運行一個容器。此時可以認為 Pod容器組是該容器的 wrapper,Kubernetes 通過 Pod 管理容器,而不是直接管理容器。
一個 Pod 中運行多個需要互相協作的容器。可以將多個緊密耦合、共享資源且始終在一起運行的容器編排在同一個Pod 中



pod中增加了pause容器的概念
副本(replicas)
一個Pod可以被復制成多份,每份稱為一個replicas。replicas屬性指定了特定 Pod 的副本的數量,當當前集群中Pod 的數量與該屬性指定的值不一致時,k8s 會采取一些策略去使得當前狀態滿足配置的要求。
控制器
適用無狀態服務
RC、RS、Deployment

Deployment在ReplicaSet的基礎上提供更多功能,包括:
創建ReplicaSet / Pod
滾動升級、回滾
平滑擴容和縮容
暫停與恢復Deployment

image.png
適用有狀態服務
StatefulSet


守護進程
DaemonSet

任務/定時任務
Job
CronJob
服務發現service

ingress

存儲
Volume
CSI
特殊類型配置
ConfigMap
Secret
DownwardAPI
其他
Role
RoleBinding
參考鏈接
資源清單采用yaml/json文件配置
理解container runtime https://zhuanlan.zhihu.com/p/338036211
k8s的controller介紹 http://t.csdn.cn/4XLKX
Kubernetes入門:應用部署方式的演變
master:集群控制節點,每個集群需要至少一個master節點負責集群的管控
node:工作負載節點,由master分配容器到這些node工作節點上,然后node節點上的docker負責容器的運行
pod:kubernetes的最小控制單元,容器都是運行在pod中的,一個pod中可以有1個或者多個容器
controller:控制器,通過它來實現對pod的管理,比如啟動pod、停止pod、伸縮pod的數量等等
service:pod對外服務的統一入口,下面可以維護同一類的多個pod
label:標簽,用于對pod進行分類,同一類pod會擁有相同的標簽
namespace:命名空間,用來隔離pod的運行環境