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

news/2024/6/3 16:35:58 标签: kubernetes, 容器, 云原生

一、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迭代;


http://www.niftyadmin.cn/n/5378638.html

相关文章

2024.2.15 模拟实现 RabbitMQ —— 消息持久化

目录 引言 约定存储方式 消息序列化 重点理解 针对 MessageFileManager 单元测试 小结 引言 问题: 关于 Message(消息)为啥在硬盘上存储? 回答: 消息操作并不涉及到复杂的增删查改消息数量可能会非常多&#xff…

【C++】实现Date类的各种运算符重载

上一篇文章只实现了operator操作符重载&#xff0c;由于运算符较多&#xff0c;该篇文章单独实现剩余所有的运算符重载。继续以Date类为例&#xff0c;实现运算符重载&#xff1a; 1.Date.h #pragma once#include <iostream> #include <assert.h>using namespace …

【数据结构】LRU Cache

文章目录 LRUCache LRUCache 1. LRUCache是一种缓存的替换技术&#xff0c;在CPU和main memory之间根据计算机的局部性原理&#xff0c;往往会采用SRAM技术来构建CPU和主存之间的高速缓存&#xff0c;DRAM(dynamic random access memory)用于构建主存&#xff0c;LRUCache这种…

相机图像质量研究(29)常见问题总结:图像处理对成像的影响--图像插值Demosaic

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

ChatGPT绘图指南:DALL.E3玩法大全(二)

在前一篇文章中&#xff0c;我们介绍了什么是 DALL.E3 模型&#xff0c; DALL.E3 有什么优势&#xff0c;使用DALL.E3 的两种方法&#xff0c;以及DALL.E3 绘图的基本规则&#xff0c; 感兴趣的朋友请前往查看: ChatGPT绘图指南&#xff1a;DALL.E3玩法大全(一). 接下来&#…

Opencv简单图像操作

Opencv 一、读取图片 1.imshow Mat imread(const string& filename, intflags1 );flags: enum { /* 8bit, color or not */CV_LOAD_IMAGE_UNCHANGED -1, /* 8bit, gray */CV_LOAD_IMAGE_GRAYSCALE 0, /* ?, color */CV_LOAD_IMAGE_COLOR 1, /* any depth, ? */…

RapidMiner数据挖掘2 —— 初识RapidMiner

本节由一系列练习与问题组成&#xff0c;这些练习与问题有助于理解多个基本概念。它侧重于各种特定步骤&#xff0c;以进行直接的探索性数据分析。因此&#xff0c;其主要目标是测试一些检查初步数据特征的方法。大多数练习都是关于图表技术&#xff0c;通常用于数据挖掘。 为此…

Lua:面向对象/C之间的交互

前段时间对平台的任务感兴趣&#xff0c;其要求是一周内12篇博文&#xff0c;尝试了之后发现还是太敷衍了&#xff0c;之后还是回归到内容本身上来&#xff0c;尽量保证一篇博文的内容能涵盖足够多的知识点或者足够深的思考成分。 面向对象 面向对象主要有三个方面&#xff1…