1 介紹
1.1 概念
??ReplicationController(副本控制器)是一種k8s資源,確保它的pod始終保持運(yùn)行狀態(tài)甘凭。它是用于復(fù)制和在異常情況下重新調(diào)度節(jié)點(diǎn)的k8s組件捶枢。
1.2 優(yōu)點(diǎn)
1)RC可以確保一個(gè)pod(或多個(gè)pod副本)持續(xù)運(yùn)行,在現(xiàn)有pod丟失時(shí)可以啟動(dòng)新的pod飞崖;
2)集群節(jié)點(diǎn)發(fā)生故障時(shí)烂叔,RC為其上面的pod(受RC控制的節(jié)點(diǎn)上的pod)創(chuàng)建替代副本;
3)輕松實(shí)現(xiàn)pod的水平伸縮固歪。
2 RC工作原理
2.1 RC工作圖
??RC會(huì)持續(xù)監(jiān)控正在運(yùn)行的pod列表蒜鸡,并保證相應(yīng)的“類型”的(標(biāo)簽選擇器)pod數(shù)目與期望的相符。如果正在運(yùn)行的pod數(shù)目小于期望值牢裳,則RC會(huì)根據(jù)pod模板創(chuàng)建新的副本逢防;若正在運(yùn)行的pod太多,RC將會(huì)刪除多余的副本蒲讯。
2.2 RC組成
1)label selector(標(biāo)簽選擇器)忘朝,用于確定RC作用域中有哪些pod;(其更改后判帮,RC會(huì)停止關(guān)注這些現(xiàn)有的pod)
2)replica count(副本個(gè)數(shù))局嘁,指定應(yīng)運(yùn)行的pod數(shù)目;(其更改后會(huì)影響到現(xiàn)有的pod)
3)pod template(pod模板)晦墙,用于創(chuàng)建新的pod副本悦昵。(其更改后,只會(huì)影響新創(chuàng)建的pod)
3 RC使用
3.1 創(chuàng)建RC
寫好yaml文件:
- 版本號(hào):apiVersion為v1
- RC定義:kind配置為ReplicationController晌畅;
- RC名字:metadata.name
- pod實(shí)例數(shù):spec.replicas
- pod選擇器:spec.selector中配置pod選擇器但指,來決定RC的操作對(duì)象;
-
pod模板:spec.template
RC的yaml模板
by k8s in action
創(chuàng)建RC命令
$ kubectl create -f xxx.yaml
RC對(duì)pod數(shù)量不足時(shí)(API Server允許客戶端監(jiān)聽資源和資源列表的更改)抗楔,產(chǎn)生響應(yīng):通過創(chuàng)建一個(gè)新的替代pod來響應(yīng)pod的刪除操作棋凳,
3.2 查看RC
查看RC命令
$ kubectl get rc
rc是replicationcontroller的簡寫;
查看RC附加信息
$ kubectl describe rc rc_name
3.3 更改已托管的pod標(biāo)簽
更改pod選擇器
$ kubectl label pod pod_name app=app_new_name --overwrite
通過--overwrite
覆蓋原標(biāo)簽信息
查看pod指定標(biāo)簽信息
$ kubectl get pods -L app
通過-L app
選項(xiàng)在列表中顯示app標(biāo)簽
注意
若更改了RC的標(biāo)簽選擇器(而不是更改pod的標(biāo)簽)连躏,則會(huì)造成所有的原RC控制的pod脫離RC管理贫橙,RC會(huì)創(chuàng)建新的pod來匹配新的標(biāo)簽選擇器。
3.4 修改RC的pod模板
??更改RC的pod模板只會(huì)影響之后創(chuàng)建的pod反粥,并且不會(huì)影響現(xiàn)有的pod卢肃。
RC擴(kuò)容
方法1:
$ kubectl scale rc rc_name --replicas=5
方法2:
$ kubectl edit rc rc_name
更改spec.replicas鍵的值
第一種是命令式疲迂,第二種是聲明式。
聲明式
聲明式是指定了期望的狀態(tài)莫湘,相比較于命令式而言尤蒿。
1)命令式是指需要step-by-step的編寫命令或腳本,需要設(shè)想目標(biāo)環(huán)境的各種情況幅垮,處理各種邊緣問題腰池,腳本在不同的環(huán)境里運(yùn)行可能會(huì)產(chǎn)生不同的結(jié)果。不具備事務(wù)性忙芒,腳本執(zhí)行過程中出現(xiàn)意外時(shí)示弓,可能就會(huì)出現(xiàn)中間狀態(tài)。
2)聲明式是使用配置文件直接描述最終狀態(tài)呵萨,不必考慮流程和目標(biāo)環(huán)境的各種細(xì)節(jié)奏属,這種方式便于文檔化和版本管理,重復(fù)部署不會(huì)產(chǎn)生不一致的結(jié)果潮峦,在不同的目標(biāo)環(huán)境下也是可以產(chǎn)生一致的部署結(jié)果囱皿。具備事務(wù)性,要么成功忱嘹,要么失敗嘱腥。
3.5 刪除RC
刪除RC及其管理的pod
$ kubectl delete rc rc_name
刪除RC,保留pod
$ kubectl delete rc rc_name --cascade=false
通過--cascade=false
保證RC的pod不受管理