13-k8s的控制器资源-rc控制器replicationcontrollers

一、rc控制器资源的概述

replicationcontrollers控制器资源,简称:rc控制器;

简单理解,rc控制器就是控制相同的pod副本数量;

使用rc控制器资源创建pod,就可以设定创建pod的数量;

二、rc控制器资源管理

1,编辑rc资源清单

root@k8s231 rc# vim rc.yaml

apiVersion: v1

kind: ReplicationController

metadata:

name: rc01

spec:

#控制pod的副本数量

replicas: 5

#选择要创建副本的pod的标签(关联pod标签,把谁的副本设置成5个呀?)

selector:

k8s: xinjizhiwa

#下面就是你要控制的pod了(就是pod资源的编辑);

template:

metadata:

name: pod-01

labels:

k8s: xinjizhiwa

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

ports:

  • containerPort: 80

2,创建rc资源

root@k8s231 rc# kubectl apply -f rc.yaml

3,查看rc资源

root@k8s231 rc# kubectl get rc

4,删除rc资源

root@k8s231 rc# kubectl delete rc rc01

5,小结

1,rc控制器创建的pod是按照标签进行副本数量控制的;

2,rc控制器资源创建的pod,直接删除pod,还会重新拉起,只有删除rc资源,pod才会消失;

3,修改rc资源,需要重新编rc资源清单,再次apply就可以修改了;

三、rc控制器资源实现业务的升级与回滚

1,模拟2个版本的镜像

第一个镜像

· 编辑dockerfile

root@k8s231 dockerfile# cat Dockerfile

FROM nginx:1.20.1-alpine

COPY code/v1 /usr/share/nginx/html/index.html

CMD "/usr/sbin/nginx", "-g", "daemon off;"

· 编辑index文件

root@k8s231 dockerfile# cat code/v1

v1:xinjizhiwa-01

· 构建镜像推送到harbor仓库

root@k8s231 dockerfile# cat b1.sh

#!/bin/bash

docker login -u admin -p 1 harbor.xinjizhiwa.com

docker image build -t harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v1 .

docker push harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v1

第二个镜像

· 编辑dockerfile

root@k8s231 dockerfile# cat Dockerfile

FROM nginx:1.20.1-alpine

COPY code/v2 /usr/share/nginx/html/index.html

CMD "/usr/sbin/nginx", "-g", "daemon off;"

· 编辑index文件

root@k8s231 dockerfile# cat code/v1

v2:xinjizhiwa-02

· 构建镜像推送到harbor仓库

root@k8s231 dockerfile# cat b1.sh

#!/bin/bash

docker login -u admin -p 1 harbor.xinjizhiwa.com

docker image build -t harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2 .

docker push harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2

2,编辑rc、svc资源清单

root@k8s231 rc# cat rc.yaml

apiVersion: v1

kind: ReplicationController

metadata:

name: rc-nginx

spec:

#控制pod的副本数量

replicas: 3

#选择要创建副本的pod的标签(关联pod标签,把谁的副本设置成n个呀?)

selector:

k8s: xinjizhiwa

#下面就是你要控制的pod了(就是pod资源的编辑);

template:

metadata:

name: pod-nginx

labels:

k8s: xinjizhiwa

spec:

containers:

  • name: c1

image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/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: xinjizhiwa

ports:

  • port: 88

targetPort: 80

nodePort: 30001

3,创建rc、svc资源

root@k8s231 rc# kubectl apply -f rc.yaml

4,浏览器访问

5,模拟迭代,换镜像

· 把资源清单中的image镜像从v1换成v2

root@k8s231 rc# cat rc.yaml

apiVersion: v1

kind: ReplicationController

metadata:

name: rc-nginx

spec:

#控制pod的副本数量

replicas: 3

#选择要创建副本的pod的标签(关联pod标签,把谁的副本设置成n个呀?)

selector:

k8s: xinjizhiwa

#下面就是你要控制的pod了(就是pod资源的编辑);

template:

metadata:

name: pod-nginx

labels:

k8s: xinjizhiwa

spec:

containers:

  • name: c1

image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2

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: xinjizhiwa

ports:

  • port: 88

targetPort: 80

nodePort: 30001

· 重新执行apply

root@k8s231 rc# kubectl apply -f rc.yaml

· 删除原有pod

删除后会自动重新拉取pod,就会拉取最新的pod了;

root@k8s231 rc# kubectl delete pods --all

· 浏览器查看,发现迭代完成

########################################

rc控制器方式,生产环境当中,从来不用;只是为了教学,模拟使用rc迭代;

相关推荐
Lumbrologist12 小时前
【零基础部署】Docker 部署 CrewAI 多 Agent 编排框架保姆级教程
运维·docker·容器
Dongwoo Jeong17 小时前
微服务架构(MSA)是如何诞生的?
微服务·云原生·架构
半旧夜夏17 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
阿里云云原生17 小时前
实战解析:如何用自然语言驱动混沌工程?Blade AI Agent 实现故障演练全链路自动化
云原生
张忠琳18 小时前
【kubernetes v1.21】(kubelet 1)Kubelet 核心架构与启动流程
云原生·架构·kubernetes·kubelet
宇明一不急19 小时前
k8s HPA storageclass configmap
云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…21 小时前
Docker + K8s集群搭建实战:1 Master+2 Node,含Harbor私有仓库与软路由
docker·云原生·容器·kubernetes·容器编排·集群部署·cri-dockerd
xier_ran1 天前
【infra之路】模块三:Kubernetes (下) — 阶段一毕业项目:在集群里跑 PyTorch 训练
pytorch·容器·kubernetes
Waay1 天前
K8s新手实操|emptyDir卷超详细实战(附完整命令+核心理解)
云原生·容器·kubernetes
liux35281 天前
K8s 核心接口:CNI、CSI、CRI、LB 一篇讲透
云原生·容器·kubernetes