kubernetes-控制器

news2025/7/26 8:11:16

目录

一、replicaset

二、deployment

1、版本迭代

2、回滚

3、滚动更新策略

4、暂停与恢复

三、daemonset

四、statefulset

五、job

六、cronjob


一、replicaset

ReplicaSet用于保证指定数量的 Pod 副本一直运行

vim rs-example.yml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx

kubectl apply -f rs-example.yml
kubectl get pod --show-labels

replicaset是通过标签匹配pod

kubectl label pod replicaset-example-c7bs2 app=myapp --overwrite
kubectl get pod --show-labels

kubectl label pod replicaset-example-c7bs2 app=nginx --overwrite
kubectl get pod --show-labels

replicaset自动控制副本数量,pod可以自愈

kubectl delete pod replicaset-example-c7bs2
kubectl get pod --show-labels

回收资源

kubectl delete -f rs-example.yml

二、deployment

Deployment 的主要作用是实现应用程序的无缝升级和回滚
vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1


kubectl apply -f deployment-example.yaml

1、版本迭代

replicaset就是deployment的一个版本

2、回滚

vim deployment-example.yaml 

kubectl apply -f deployment-example.yaml
kubectl get all

3、滚动更新策略

vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  minReadySeconds: 5
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1

kubectl apply -f deployment-example.yaml
kubectl describe deployments.apps deployment-example

4、暂停与恢复

暂停,避免触发不必要的线上更新

kubectl rollout pause deployment deployment-example

vim deployment-example.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  minReadySeconds: 5
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  replicas: 6
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: nginx
        resources:
          limits:
            cpu: 0.5
            memory: 200Mi
          requests:
            cpu: 0.5
            memory: 200Mi

kubectl apply -f deployment-example.yaml

调整副本数,不受影响

但是更新镜像和修改资源并没有触发更新

kubectl rollout history deployment deployment-example

恢复后开始触发更新

kubectl rollout resume deployment deployment-example
kubectl rollout history  deployment deployment-example

回收

kubectl delete -f deployment-example.yaml

三、daemonset

Taints(污点)是一种标记,可以应用于节点,用于表示这个节点上的某些条件不适合运行某些 Pod。

vim daemonset-example.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-example
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      tolerations:
      - effect: NoSchedule
        operator: Exists
      containers:
      - name: nginx
        image: nginx

kubectl apply -f daemonset-example.yml
kubectl get pod -o wide

记得回收资源

四、statefulset


当使用StatefulSet时,Pod的名称会包括一个索引,例如web-0,web-1,web-2等,这些索引是按顺序递增的,并且在Pod的生命周期中保持不变

StatefulSet保证每个Pod的名称在整个集群中是唯一的,例如,如果您有一个名为web-0的Pod,任何时候都不能重新创建一个叫做web-0的Pod。

vim statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  minReadySeconds: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web

kubectl apply -f statefulset.yaml
kubectl get pod

五、job

Job是用于处理一次性任务的控制器,它可以保证任务成功完成后自动停止。Job中包含一个或多个Pods,在Pods成功完成后便完成任务。如果Pods失败,则Job会重启Pods,直到任务完成。

提前将perl上传至harbor仓库

vim job.yml


apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 6        //完成任务的Pod数量
  parallelism: 2        //并行执行的Pod数量
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never        //完成后不会重启
  backoffLimit: 4            //当任务执行失败时,最多重试的次数

kubectl apply -f job.yml

记得回收资源

六、cronjob

CronJob是用于处理周期性任务的控制器,它类似于传统的Cron定时任务,可以基于指定的时间或时间间隔来执行任务。CronJob会创建一个Job对象来运行任务,Job对象运行完成后自动被删除。如果Job对象出现错误,CronJob将会自动重启Job对象,直到任务成功完成。

vim cronjob.yml

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

kubectl apply -f cronjob.yml
kubectl get all
kubectl get pod
kubectl delete -f cronjob.yml

每分钟的每一秒都会执行一次,使用busybox镜像来打印当前时间并输出"Hello from the Kubernetes cluster"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chat2DB Web版 服务器端安装部署启动流程

目录 前言安装部署过程下载安装包下载JDK17启动登录 可能出现的报错启动报错Java版本低flyway的bean创建失败登录失败无法执行二进制文件 前言 Chat2DB是款数据库连接工具,主要就是使用JDBC做数据库连接,外加多对接了几个聊天AI网站,把数据库…

敏捷开发框架Scrum-概述

如果你是一个程序员,可能会觉得这是个程序开发框架。我开始也是这样认为的。后来学习了PMP、敏捷后,才知道Scrum是一个用于管理团队工作的敏捷框架。Scrum可以理解成一个团队在一段时间里完成工作的方式。这里的一段时间通常很短,一到两周&am…

【好书推荐】ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践

前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不断地影响和改变着各个行业。 如今,我们正在见证人工智能…

vue 中methods方法为啥不能用箭头函数

vue用了很久了,但是又返回来看这个神秘的问题 这里理解不了:问题一:为啥他的上层就是script了呀,箭头函数没有作用域? 问题二:箭头函数没有作用域,但是外层的methods,{} 花括号不是…

518抽奖软件,可从Excel~Word~Pdf~网页导入名单

518抽奖软件简介 518抽奖软件,518我要发,超好用的年会抽奖软件,简约设计风格。 包含文字号码抽奖、照片抽奖两种模式,支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 从Excel、WPS表格导入 整列: 用鼠…

Linux C语言进阶-D1二维数组

数据类型 数组名[常量表达式][常量表达式] 定义方式:声明时列数不能省略,行数可以 由于内存是一维的,所以数组时顺序存放的:按行顺序排放 行名a[0]、a[1]、a[2]可以称为一维数组名 验证行名就是一维数组名: 1、数组名…

0基础学习PyFlink——时间滑动窗口(Sliding Time Windows)

在《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》我们介绍了不会有重复数据的时间滚动窗口。本节我们将介绍存在重复计算数据的时间滑动窗口。 关于滑动窗口,可以先看下《0基础学习PyFlink——个数滑动窗口(Sliding Count Windows&#x…

【热带气旋】基本介绍:定义、标准、结构等

热带气旋基本介绍 热带气旋(Tropical Cyclone, TC)1 热带气旋定义2 热带气旋标准2.1 热带低压(Tropical Depression)2.2 热带风暴(Tropical storm)2.3 强热带风暴(Severe tropical storm&#x…

2023 DevFest 开发者大会 | 精彩进行时!

DevFest 是由全球各地的谷歌开发者社区 (Google Developer Groups,GDG) 主导的,为期数月的系列 Google 技术交流活动。DevFest 为参与者提供一个与 Google 员工、GDE 谷歌开发者专家、社区 KOL、行业开发者和问题解决者面对面交流的机会。 今年&#xff…

[SUCTF 2019]EasySQL 1

题目环境: 把你的旗子给我,我会告诉你旗子是不是对的。 判断注入类型1回显结果 不是字符型SQL注入 1回显结果 数字型SQL注入 查所有数据库,采用堆叠注入1;show databases;查看所有数据表1;show tables;尝试爆Flag数据表的字段1;show columns from Flag; …

机器人仿真-gazebo学习笔记(3)URDF和机器人模型

1.URDF简介 URDF(统一机器人麦哦书格式)是ROS中的重要机器人模型描述格式,ROS提供了URDF文件的c解析器,可以解析URDF文件中使用XML格式的机器人模型。 urdf - ROS Wiki 自己查阅ros官方对URDF的介绍其实会强于大部分网上流传的文章。 1.URDF文件常用的…

电脑硬件坏了,如何维修?

在电子设备日益普及的今天,电脑已成为很多人生活和工作中不可或缺的工具,然而在使用过程中很容易遇见电脑故障之类的问题,这些问题十有八九来自硬件,那么针对电脑硬件问题,该如何维修? 一般来说&#xff0c…

深入探究Vue.js生命周期及其应用场景

当谈到Vue.js的生命周期时,我们指的是组件在创建、更新和销毁过程中发生的一系列事件。了解Vue的生命周期对于开发人员来说是至关重要的,因为它们提供了一个机会来执行特定任务,并在不同的阶段处理组件。 Vue的生命周期可以分为八个不同的阶…

项目管理-挣值管理例题-使用SV进度偏差和CV成本偏差来判断进度和成本是否合适

基础概念介绍 CV和SV的计算公式 在财务分析中,常常会用到CV和SV这两个指标。CV是成本偏差,SV是进度偏差。它们的计算公式如下: CV EV - AC SV EV - PV 其中,EV是挣值,AC是实际成本,PV是计划价值。 …

Android Studio中配置Git

安装Git 在安装Android Studio之前,需要先安装Git。可以从Git官网下载并安装Git:https://git-scm.com/downloads 在Android Studio中配置Git 在Android Studio中,依次点击“File” -> “Settings”,在弹出的窗口中选择“Ver…

软件产品如何进行跨浏览器测试?

跨浏览器测试是确保Web应用程序的功能在不同浏览器、浏览器版本和操作系统之间保持一致的过程,从而为其用户提供轻松的用户体验。跨浏览器测试涉及浏览器和操作系统的组合,以测试应用程序的响应能力和兼容性。 一、跨浏览器测试的作用   1、发现兼容性…

Postman测试金蝶云星空Webapi【协同开发云】

文章目录 Postman测试金蝶云星空Webapi【协同开发云】环境说明业务背景大致流程具体操作请求登录接口请求标准接口查看保存提交审核反审核撤销 请求自定义接口参数是字符串参数是实体类单个实体类实体类是集合 其他 Postman测试金蝶云星空Webapi【协同开发云】 环境说明 金蝶…

面向对象【this关键字】

文章目录 this关键字基本作用调用变量调用方法调用构造器this 关键字的限制 this关键字 它在方法(实例方法或非 static 的方法)内部使用,表示调用该方法的对象它在构造器内部使用,表示该构造器正在初始化的对象。 基本作用 引用…

如何将 ruby 打包类似于jdk在另一台相同架构的机器上面开箱即用

需求 目前工作中使用到了ruby作为java 项目的中转语言,但是部署ruby的时候由于环境的不同会出现安装依赖包失败的问题,如何找到一种开箱即用的方式类似于java 中的jdk内置jvm这种方式 解决 TruffleRuby 完美解决问题,TruffleRuby 是使用 T…

5.13.Post方法进行线程切换

在上节课中呢,我向你介绍接口调用过程中啊,曾经看到过post方法。当时我已经向你解释过pose方法呢,就是从一个线程切换到另外一个线程,那整个的过程呢,非常简单,就是从发送线程创建一个消息。塞到接收线程的…