9.1.k8s的控制器资源(rc控制器replicationcontrollers)
replicationcontrollers控制器资源,简称:rc控制器;简单理解,rc控制器就是控制相同的pod副本数量;使用rc控制器资源创建pod,就可以设定创建pod的数量;特点rc控制器创建的pod是按照标签进行副本数量控制的;rc控制器资源创建的pod,直接删除pod,还会重新拉起,只有删除rc资源,pod才会消失;修改rc资源,需要重新编rc资源清单,再次apply就可以修改了;
·
目录
一、rc控制器资源的概述
- replicationcontrollers控制器资源,简称:rc控制器;
- 简单理解,rc控制器就是控制相同的pod副本数量;
- 使用rc控制器资源创建pod,就可以设定创建pod的数量;
特点
- rc控制器创建的pod是按照标签进行副本数量控制的;
- rc控制器资源创建的pod,直接删除pod,还会重新拉起,只有删除rc资源,pod才会消失;
- 修改rc资源,需要重新编rc资源清单,再次apply就可以修改了;
二、rc控制器资源管理
1.编辑rc资源清单
[root@k8s1 rc]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc01
spec:
#控制pod的副本数量
replicas: 3
#选择要创建副本的pod的标签(关联pod标签,把谁的副本设置成5个呀?)
selector:
k8s: rc-pod
#下面就是你要控制的pod了(就是pod资源的编辑);
template:
metadata:
name: pod-01
labels:
k8s: rc-pod
spec:
containers:
- name: c1
image: nginx:1.20.1-alpine
ports:
- containerPort: 80
[root@k8s1 rc]# kubectl apply -f rc.yaml
replicationcontroller/rc01 created
2.查看rc资源
[root@k8s1 rc]# kubectl get rc -owide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
rc01 3 3 3 60s c1 nginx:1.20.1-alpine k8s=rc-pod
3.删除rc资源
[root@k8s1 rc]# kubectl delete rc rc01
replicationcontroller "rc01" deleted
三、rc控制器资源实现业务的升级与回滚
rc控制器方式,生产环境当中,一般不用;只是为了教学,模拟使用rc迭代;
1.模拟2个版本的镜像
1.1.编辑dockerfile
[root@k8s1 rc]# cat Dockerfile_v1
FROM nginx:1.20.1-alpine
COPY code/v1 /usr/share/nginx/html/index.html
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
[root@k8s1 rc]#
[root@k8s1 rc]# cat Dockerfile_v2
FROM nginx:1.20.1-alpine
COPY code/v2 /usr/share/nginx/html/index.html
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
1.2.编辑index文件
[root@k8s1 rc]# ls code/
v1 v2
[root@k8s1 rc]# cat code/v1
v1:oslee-01
[root@k8s1 rc]# cat code/v2
v2:oslee-02
1.3.构建镜像推送到harbor仓库
# 构建
docker build -t harbor.oslee.com/oslee-private/my-nginx:v1 -f Dockerfile_v1 .
docker build -t harbor.oslee.com/oslee-private/my-nginx:v2 -f Dockerfile_v2 .
# 登录并推送
docker login harbor.oslee.com -u admin -p harbor123
docker push harbor.oslee.com/oslee-private/my-nginx:v1
docker push harbor.oslee.com/oslee-private/my-nginx:v2
2.编辑rc、svc资源清单
[root@k8s1 rc]# cat rc-upgrade.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
#控制pod的副本数量
replicas: 3
#选择要创建副本的pod的标签(关联pod标签,把谁的副本设置成n个呀?)
selector:
k8s: rc-pod
#下面就是你要控制的pod了(就是pod资源的编辑);
template:
metadata:
name: pod-nginx
labels:
k8s: rc-pod
spec:
# 用的harbor私有仓库,需要使用secret拉取
imagePullSecrets:
- name: oslee-harbor
containers:
- name: c1
image: harbor.oslee.com/oslee-private/my-nginx:v1
ports:
- containerPort: 80
command:
- "nginx"
- "-g"
- "daemon off;"
---
#编辑service资源用于外部访问
apiVersion: v1
kind: Service
metadata:
name: svc-rc-nginx
spec:
type: NodePort
clusterIP: 10.200.10.10
selector:
k8s: rc-pod
ports:
- port: 88
targetPort: 80
nodePort: 30001
[root@k8s1 rc]# kubectl apply -f rc-upgrade.yaml
replicationcontroller/rc-nginx created
service/svc-rc-nginx created
3.浏览器访问
4.模拟迭代,换镜像
# 改为v2版本
[root@k8s1 rc]# vi rc-upgrade.yaml
image: harbor.oslee.com/oslee-private/my-nginx:v2
# 重新执行apply
[root@k8s1 rc]# kubectl apply -f rc-upgrade.yaml
replicationcontroller/rc-nginx configured
service/svc-rc-nginx unchanged
# 删除原有pod,rc会自动拉起新pod
[root@k8s1 rc]# kubectl get pod | awk 'NR>1 {print $1}' | xargs kubectl delete pod
pod "rc-nginx-5ftlk" deleted
pod "rc-nginx-fxfrj" deleted
pod "rc-nginx-sb2xk" deleted
5.浏览器查看,发现已升级
==============================至此,已成艺术===============================
更多推荐
已为社区贡献25条内容
所有评论(0)