歡迎各位讀者評論留言,共同學習结窘,共同進步很洋。
《kubernetes權威指南》筆記
上一節(jié)見1.4kubernetes基本概念和術語(1)
4.Label
特點:
1). key=value的鍵值對。
2). Label可添加到多種資源對象上隧枫,例如Node喉磁、Pod、Service官脓、RC等协怒。
3). label和資源對象可以是多對多的關系。
4).Label通常在資源對象定義時確定卑笨,也可以在對象創(chuàng)建后動態(tài)添加或者刪除孕暇。-
用途:
可以通過給指定的資源對象捆綁一個或多個不同的Label來實現(xiàn)多維度的資源分組管理功能,以便靈活赤兴、方便地進行資源分配妖滔、調(diào)度、配置桶良、部署等管理工作座舍。
例如:部署不同版本的應用到不同的環(huán)境中;監(jiān)控和分析應用(日志記錄艺普、監(jiān)控簸州、告警)等鉴竭。
標簽分類舉例 標簽查詢: 給某個資源對象定義一個Label,就相當于給它打了一個標簽岸浑,隨后可以通過Label Selector(標簽選擇器)查詢和篩選擁有某些Label的資源對象搏存,Kubernetes通過這種方式實現(xiàn)了類似SQL的簡單又通用的對象查詢機制。
可用的查詢舉例: =矢洲、!=璧眠、In 、 NotIn 读虏、 Exists和DoesNotExist等使用:
Pod中在metadata中配置label;
管理對象RC和Service則通過Selector字段設置需要關聯(lián)Pod的Label责静;
其他管理對象如Deployment、ReplicaSet盖桥、DaemonSet和Job則可以在Selector中使用基于集合的篩選條件定義灾螃。
- 應用場景舉例:
◎ kube-controller進程通過在資源對象RC上定義的Label Selector來篩選要監(jiān)控的Pod副本數(shù)量揩徊,使Pod副本數(shù)量始終符合預期設定的全自動控制流程腰鬼。
◎ kube-proxy進程通過Service的Label Selector來選擇對應的Pod,自動建立每個Service到對應Pod的請求轉發(fā)路由表塑荒,從而實現(xiàn)Service的智能負載均衡機制熄赡。
◎ 通過對某些Node定義特定的Label,并且在Pod定義文件中使用NodeSelector這種標簽調(diào)度策略齿税,kube-scheduler進程可以實現(xiàn)Pod定向調(diào)度的特性彼硫。
例子1:很好理解,在RC配置中即可實現(xiàn)。
上圖講解的是使用selector,選擇的則是畫圈的兩個Pod.
5.Replication Controller
支持Pod自動擴縮史飞,實現(xiàn)集群高可用,版本滾動升級他托。
RC結構基本分三部分,如下圖:
作用:◎ 在大多數(shù)情況下仆葡,我們通過定義一個RC實現(xiàn)Pod的創(chuàng)建及副本數(shù)量的自動控制赏参。
◎ 在RC里包括完整的Pod定義模板。
◎ RC通過Label Selector機制實現(xiàn)對Pod副本的自動控制沿盅。
◎ 通過改變RC里的Pod副本數(shù)量把篓,可以實現(xiàn)Pod的擴容或縮容。
1). 擴容:通過修改RC的副本數(shù)量腰涧,來實現(xiàn)Pod的動態(tài)縮放:
$ kubectl scale rc redis-slave --replicas=3
2).刪除: 刪除RC并不會影響通過該RC已創(chuàng)建好的Pod韧掩。為了刪除所有Pod,可以設置replicas的值為0窖铡,然后更新該RC疗锐。另外坊谁,kubectl提供了stop和delete命令來一次性刪除RC和RC控制的全部Pod。
◎ 通過改變RC里Pod模板中的鏡像版本滑臊,可以實現(xiàn)Pod的滾動升級口芍。
滾動升級:應用升級時,通常會使用一個新的容器鏡像版本替代舊版本雇卷。通過RC機制鬓椭,Kubernetes很容易就實現(xiàn)了這種高級實用的特性。
比如我們設置新舊的label相同关划,但是RC中設置的template是最新的版本小染,那么在默認集群節(jié)點個數(shù)固定情況,每去掉一個都會動態(tài)創(chuàng)新一個新版本贮折,知道都是新的版本為止裤翩。
- RC調(diào)度過程:
在我們定義了一個RC并將其提交到Kubernetes集群中后,Master上的Controller Manager組件就得到通知调榄,定期巡檢系統(tǒng)中當前存活的目標Pod岛都,并確保目標Pod實例的數(shù)量剛好等于此RC的期望值,如果有過多的Pod副本在運行振峻,系統(tǒng)就會停掉一些Pod,否則系統(tǒng)會再自動創(chuàng)建一些Pod择份】勖希可以說,通過RC荣赶,Kubernetes實現(xiàn)了用戶應用集群的高可用性凤价,并且大大減少了系統(tǒng)管理員在傳統(tǒng)IT環(huán)境中需要完成的許多手工運維工作(如主機監(jiān)控腳本、應用監(jiān)控腳本拔创、故障恢復腳本等)利诺。
與replica Set對比:
1). Replica Sets支持基于集合的Label selector(Set-based selector),而RC只支持基于等式的Label Selector(equality-based selector)剩燥,這使得Replica Set的功能更強慢逾。
2). 主要被Deployment這個更高層的資源對象所使用,從而形成一整套Pod創(chuàng)建灭红、刪除侣滩、更新的編排機制。我們在使用Deployment時变擒,無須關心它是如何創(chuàng)建和維護Replica Set的君珠,這一切都是自動發(fā)生的。
3). Replica Set與Deployment娇斑,是Kubernetes 1.3里Pod自動擴容(伸縮)這個告警功能實現(xiàn)的基礎策添,也將繼續(xù)在Kubernetes未來的版本中發(fā)揮重要的作用材部。