目录
- 前言
- 副本控制器-RC(已废弃)
- 工作原理
- 模板
- 实战
- 创建
- 删除
- 副本集合-RS
- 工作原理
- 模板
- 参考
前言
前面文章k8s学习-Pod(生命周期、探针、模板、创建、删除等)学习了Pod,Pod在集群中可能会有多个,一个Pod也可能会有多个副本来提高高可用性。本篇文章学习RC与RS,对于RC,不必太多关注,这两个一般都不用管理手动创建,而是使用更高级的workload,Deployment基于RS,所以RS可以关注一下。
副本控制器-RC(已废弃)
工作原理
如果 pod 太多,ReplicationController 会终止多余的 pod。如果太少,ReplicationController 会启动更多的 pod。
模板
RC除了需要apiVersion、kind和metadata字段,还需要.spec字段。
spec字段下一般有
- replicas:期望的副本数
- selector:Pod选择器,用于管理所有带此label的Pod,若指定,template中的需要一致
- template:Pod 模板
apiVersion v1
kind ReplicationController
metadata
name nginx # RC的名字
spec
replicas 3 # 期望的副本数
selector# 选择器,需要与template.metadata.labels一致
app nginx
template# Pod模板
metadata
name nginx
labels
app nginx
spec
containers
name nginx
image nginx
ports
containerPort80
实战
创建
kubectl create -f rc-test.yaml -n killer
kubectl get pods -n killer
kubectl get rc -n killer
删除
直接删除Pod是不行
可以看到RC会保证Pod的数量
kubectl delete rc nginx -n killer
副本集合-RS
工作原理
ReplicaSet 由字段定义,包括指定如何识别可以获取的 Pod 的选择器、指示它应该维护多少个 Pod 的副本数量以及指定它应该创建以满足数量的新 Pod 的数据的 Pod 模板副本标准。
模板
apiVersion apps/v1
kind ReplicaSet
metadata
name frontend
labels
app guestbook
tier frontend
spec
# modify replicas according to your case
replicas3
selector
matchLabels
tier frontend
template
metadata
labels
tier frontend
spec
containers
name php-redis
image gcr.io/google_samples/gb-frontend v3
这个就不实战了,生产环境中更多的是使用Deployment等进行替代。
参考
k8s-RCk8s-RS