Pod控制器之ReplicaSet
简介:
说到ReplicaSet对象,得先说说ReplicationController(简称为RC)。在旧版本的Kubernetes中,只有ReplicationController对象。它的主要作用是确保Pod以你指定的副本数运行,即如果有容器异常退出,会自动创建新的 Pod 来替代;而异常多出来的容器也会自动回收。可以说,通过ReplicationController,Kubernetes实现了集群的高可用性。
在新版本的 Kubernetes 中建议使用 ReplicaSet(简称为RS )来取代 ReplicationController。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector(ReplicationController 仅支持等式)。
虽然 ReplicaSet 也可以独立使用,但建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持),并且Deployment还支持版本记录、回滚、暂停升级等高级特性
创建一个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
创建rs
kubectl apply -f rs.yaml
查看状态:
[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的扩缩容
扩容
使用kubectl edit命令在线修改 缩容也是一样
也支持更新升级(也就是更改容器镜像的版本)但是使用edit命令去更改镜像版本过后实际上线上的镜像是不会去重建的,只有删除一个pod重建后才是更新的版本,但是需要人工参与