Pod控制器之ReplicaSet
簡(jiǎn)介:
說(shuō)到ReplicaSet對(duì)象,得先說(shuō)說(shuō)ReplicationController(簡(jiǎn)稱為RC)。在舊版本的Kubernetes中,只有ReplicationController對(duì)象。它的主要作用是確保Pod以你指定的副本數(shù)運(yùn)行,即如果有容器異常退出,會(huì)自動(dòng)創(chuàng)建新的 Pod 來(lái)替代;而異常多出來(lái)的容器也會(huì)自動(dòng)回收??梢哉f(shuō),通過(guò)ReplicationController,Kubernetes實(shí)現(xiàn)了集群的高可用性。
在新版本的 Kubernetes 中建議使用 ReplicaSet(簡(jiǎn)稱為RS )來(lái)取代 ReplicationController。ReplicaSet 跟 ReplicationController 沒(méi)有本質(zhì)的不同,只是名字不一樣,并且 ReplicaSet 支持集合式的 selector(ReplicationController 僅支持等式)。
雖然 ReplicaSet 也可以獨(dú)立使用,但建議使用 Deployment 來(lái)自動(dòng)管理 ReplicaSet,這樣就無(wú)需擔(dān)心跟其他機(jī)制的不兼容問(wèn)題(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持),并且Deployment還支持版本記錄、回滾、暫停升級(jí)等高級(jí)特性
創(chuàng)建一個(gè)ReplicaSet
vim rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: myapp
release: cancay
template:
metadata:
name: myapp
labels:
app: myapp
release: cancay
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
創(chuàng)建rs
kubectl apply -f rs.yaml
查看狀態(tài):
[root@k8s-master daem]# kubectl get rs
NAME DESIRED CURRENT READY AGE
myapp 2 2 2 2m36s
[root@k8s-master daem]# kubectl get pods
NAME READY STATUS RESTARTS AGE
liveness-httpget 1/1 Running 1 2d1h
myapp-84lr8 1/1 Running 0 3m7s
myapp-tpthp 1/1 Running 0 3m7s
poststart-pod 1/1 Running 1 100m
readiness-httpget-pods 1/1 Running 0 2d
ReplicaSet是具有高可用的

ReplicaSet的擴(kuò)縮容
擴(kuò)容

使用kubectl edit命令在線修改 縮容也是一樣
也支持更新升級(jí)(也就是更改容器鏡像的版本)但是使用edit命令去更改鏡像版本過(guò)后實(shí)際上線上的鏡像是不會(huì)去重建的,只有刪除一個(gè)pod重建后才是更新的版本,但是需要人工參與
