概念
kubernetes需要保证应用能持续运行,使用rc -> replication controller 保证任何时间k8s中都有指定数量的pod在运行。
rc监控pod的运行状态,pod有异常时, rc控制在其他node上启动新的pod。
还提供其他滚动升级,升级回滚等功能。
yaml文件格式
apiVersion: v1
kind: ReplicationController
metadata:
name: rctest
spec:
replicas: 2 # pod个数
selector:
app: rctest
template: # pod的启动模板,没有name,因为pod name不能一样,所以不指定
meatdata:
labels:
app: rctest
spec:
containers:
- name: rctest
image: specificaddr/busybox:latest
ports:
- containerPort:80
kubernetes对rc的操作
# 查看
kubectl get rc
# 显示更多内容
kubectl get rc -o wide
# 扩充副本数
kubectl scale rc ${rcname} --replicas=3
rc如何和pod关联-label
通过标签选择这个pod归这个rc管理
apiVersion: v1
kind: ReplicationController
metadata:
name: rctest
spec:
replicas: 2
selector: # 选择器
app: rctest
template:
meatdata:
labels: # 每个pod都会有的标签
app: rctest
spec:
containers:
- name: rctest
image: specificaddr/busybox:latest
ports:
- containerPort:80
rc滚动升级和回滚
# 滚动升级
kubectl rolling-update 现在rc名 -f 新rc.yaml --update-period=30s
# 回滚
kubectl rolling-update 新rc.yaml -f 现在rc名 --update-period=1s
# 出现问题,中断升级后,回滚到上一个版本
kubectl rolling-update 旧rc名 新rc名 --rollback