Label,RC,HPA
上面簡單說了一下 pod 的基本知識點,待到后面會使用到 pod 的一些高階知識點的時候,還可以再細(xì)細(xì)琢磨底層原理
我們接著繼續(xù)學(xué)習(xí) Lable , RC,HPA 的相關(guān)知識點
Label 是什么?
label 就是標(biāo)簽,例如之前我們手寫的 yaml 文件中,每一個鍵值對都是 label,如 key =value
label 一般是在定義資源的時候就確定了,當(dāng)然我們也可以在對象創(chuàng)建之后進(jìn)行動態(tài)的添加,編輯,和刪除
我們寫的 label 可以附加到 Node,Service,Pod,RC 中,每一類資源都可以定義任意數(shù)量的 label, 同一個 label 也是可以被添加到任意數(shù)量的資源對象上的
這一點確實是很靈活了有么有
label 為什么要附加到各種資源對象上呢?
因為 label 和 label selector 都是不能單獨定義的,他們必須要依附在某一類資源對象上,這是為了能夠去管理這些資源,使用 label selector 對他們分組
例如寫一個 openresty ,寫一個 RC 使用 openresty ,Service 調(diào)用 openresty 的 label selector
apiVersion:?v1
kind:?ReplicationController?
metadata:?
??name:?openresty
spec:
??replicas:?2
??selector:
????app:?openresty
??tmplate:
????metadata:
??????labels:
????????app:?openresty
??????spec:
????????containers:
????????-?name:?openresty
????????ports:
????????-?containerPort:?80
----------------------------
apiVersion:?v1
kind:?Service?
metadata:?
??name:?openresty
spec:
??type:?NodePort
??ports:
??-?port:?80
????nodePort:?30125
??selector:
????app:?openresty
RC 是什么?
RC 是什么,前面解釋到,就是 ReplicationController 副本控制器
當(dāng)我們定義一個 RC ,提交給 K8S 的時候,這是一個期望值,Master 節(jié)點上的 Controller Manager 組件得到通知后,就會去定期檢查 pod ,會確保 pod 的數(shù)量和我們預(yù)期的數(shù)量一致
如果當(dāng)前檢測到的數(shù)量和我們的預(yù)期數(shù)量不一致,那么控制器就會對 pod 做增加和刪除的操作,這就可以實現(xiàn) pod 動態(tài)擴(kuò)縮功能
之前我們也有提到,我們可以使用如下指令來設(shè)置我們期望的副本數(shù)
kubectl?scale?rc?服務(wù)名?--replicas=具體的數(shù)字
RC ?和 Replica Sets 有何區(qū)別?
他倆在本質(zhì)上沒有什么區(qū)別,只是 Replica Sets ?支持的更多
RCReplica Sets支持基于等式的 label selector支持基于集合的 label selectorK8S 1.2 之后出現(xiàn)的,Replica Sets ?主要是被 Deployment 這樣的資源對象所使用
為了提高我們應(yīng)用的容災(zāi)能力,哪怕程序只有 ?1 個 pod 副本,也要通過 RC 的方式去管理,因為 RC 可以管理 pod 的創(chuàng)建,刪除,更新等編排機(jī)制,不用 pod 自己瞎操心
HPA 是什么?
HPA 就是 Horizontal Pod Autoscal ,pod 的橫向擴(kuò)容,他也是 K8S 的一種資源對象
HPA 的簡單原理
HAP 通過追蹤和分析 RC 的 pod 的負(fù)載變化情況,酌情調(diào)整目標(biāo) pod 的副本數(shù)
K8S 提供 2 種方式來對 pod 擴(kuò)容和縮容
第一種是我們使用命令的方式對 RC,Deployment 進(jìn)行擴(kuò)容和縮容
kubectl?scale?rc/deployment?服務(wù)名?--replicas?數(shù)量
第二種是使用 HPA 的方式,自動擴(kuò)容和縮容
自動的模式就需要用戶根據(jù)指定的一個性能指標(biāo),還要預(yù)先指定一個副本的數(shù)量范圍,系統(tǒng)就會自動的在我們設(shè)定的范圍內(nèi)根據(jù)性能指標(biāo)進(jìn)行調(diào)整
HPA 小案例
寫一個 自己 nginx deployment
apiVersion:?extension/v1beta1
kind:?Deployment
metadata:
??name:?my?nginx?deployment
spec:
??replicas:?2
??template:
????metadata:
??????name:?my?deployment
??????labels:
????????app:?nginx
????spec:
??????containers:
??????-?name:?nginx
????????image:?nginx
????????resources:
??????????requrests:
????????????cpu:?50m
????????ports:
????????-?containerPort:?80
寫一個 service
寫一個 service ,命名為 mynginx-svc
apiVersion:?v1
kind:?Service
metadata:
??name:?mynginx-svc
spec:
??ports:
??-?port:?80
??selector:
????app:?nginx
寫一個 hpa
hpa 設(shè)置最小的副本數(shù) ?2, 最大的副本數(shù) 5個,CPU 在 70 % 以下 ,引用 ?my nginx deployment
apiVersion:?autoscaling/v1
kind:?HorizontalPodAutoscaler
metadata:
??name:?mynginx-hpa
spec:
??scaletargetRef:
????apiversion:?app/v1beta1
????kind:?deployment
????name:?my?nginx?deployment
??minReplicas:?2
??maxReplicas:?5
??targetCPUUtillizationPercentage:?70
今天就到這里,學(xué)習(xí)所得,若有偏差,還請斧正
歡迎點贊,關(guān)注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力
好了,本次就到這里
技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。
我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~