一、rc控制器replicationcontrollers
rc控制器就是控制相同pod副本数量
使用rc控制器资源创建pod,设定创建pod资源的数量
1.1 案例
1.1.1、创建资源清单
[root@master rc-demo]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc01
spec:
replicas: 3 #控制要创建的副本数量
selector:
k8s: dolphin
template:
metadata:
name: pod-01
labels:
k8s: dolphin
spec:
containers:
- name: c1
image: nginx
ports:
- containerPort: 80
1.1.2、创建资源
[root@master rc-demo]# kubectl apply -f rc.yaml
1.1.3、查看资源
1.1.4、删除资源
[root@master rc-demo]# kubectl delete -f rc.yaml
replicationcontroller "rc01" deleted
1.1.5、总结
- rc控制器创建的pod是按照标签进行父辈数量控制的;
- rc控制器资源创建的pod,直接删除pod,还会重新拉起,只有删除rc资源,pod才会消失
- 修改rc资源,需要重新编辑rc资源清单,再次apply就可以修改了
1.2 rc控制器实现资源业务的升级与回滚
1.2.1 创建2个镜像的版本
第一个镜像
[root@master rc-demo]# cat Dockerfile
FROM nginx:1.20.1-alpineRUN echo rc-v1 > /usr/share/nginx/html/index.html
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
[root@master rc-demo]# docker build -t dolphinc/nginx:v1 .
[root@master rc-demo]# docker push dolphinc/nginx:v1
第二个镜像
[root@master rc-demo]# cat Dockerfile
FROM nginx:1.20.1-alpineRUN echo rc-v2 > /usr/share/nginx/html/index.html
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
[root@master rc-demo]# docker build -t dolphinc/nginx:v2 .
[root@master rc-demo]# docker push dolphinc/nginx:v2
1.2.2 编辑资源清单
[root@master rc-demo]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
replicas: 3 #控制pod的副本数量
selector:
k8s: dolphinc-rc
#下面就是你要控制的pod了(就是pod资源的编辑);
template:
metadata:
name: pod-nginx
labels:
k8s: dolphinc-rc
spec:
containers:
- name: c1
image: dolphinc/nginx:v1
ports:
- containerPort: 80
command:
- "nginx"
- "-g"
- "daemon off;"
---
#编辑service资源用于外部访问
apiVersion: v1
kind: Service
metadata:
name: svc-rc-nginx
spec:
type: NodePort
selector:
k8s: dolphinc-rc
ports:
- port: 88
targetPort: 80
nodePort: 30001
1.2.3 创建资源
[root@master rc-demo]# kubectl apply -f rc.yaml
1.2.4 查看资源
1.2.5 访问资源
1.2.6 修改rc.yaml 更换镜像
[root@master rc-demo]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: rc-nginx
spec:
replicas: 3 #控制pod的副本数量
selector:
k8s: dolphinc-rc
#下面就是你要控制的pod了(就是pod资源的编辑);
template:
metadata:
name: pod-nginx
labels:
k8s: dolphinc-rc
spec:
containers:
- name: c1
image: dolphinc/nginx:v2
ports:
- containerPort: 80
command:
- "nginx"
- "-g"
- "daemon off;"
---
#编辑service资源用于外部访问
apiVersion: v1
kind: Service
metadata:
name: svc-rc-nginx
spec:
type: NodePort
selector:
k8s: dolphinc-rc
ports:
- port: 88
targetPort: 80
nodePort: 30001
1.2.7 重新执行创建资源命令
[root@master rc-demo]# kubectl apply -f rc.yaml
1.2.8 删除原有Pod(自动拉取新的pod)
[root@master rc-demo]# kubectl delete pods --all
1.2.9 再次访问资源(升级迭代完成)
1.2.10 回滚操作
将版本号替换为v1删除pod,重新执行命令就回滚了,跟上述升级迭代操作一样
二、rs资源控制器replicasets
跟rc几乎一样,区别就是你支持标签匹配pod,也支持标签表达式
写法区别如下,一般很少用到这种写法,用的多的都是matchLabels标签匹配,了解即可