kubernetes-控制器

目录

一、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"

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用requests库进行HTTP爬虫编程

目录 一、安装requests库 二、发送HTTP请求 三、解析HTML页面 四、处理HTTP响应和异常 五、使用代理和会话管理 六、使用多线程或多进程提高效率 七、数据存储和处理 八、注意事项和总结 在当今的数字化世界中,数据已经成为了一种宝贵的资源。而网络爬虫程序…

在线开发平台是什么?有哪些优势?

目录 一、什么是在线开发平台? 二、企业为什么选择在线开发平台? (1)风险低,回报高 (2)可视化操作更形象 (3)易维护 三、在线开发平台功能展示 技术介绍 随着互联网和信息…

【ROS入门】雷达、摄像头及kinect信息仿真以及显示

文章结构 雷达信息仿真以及显示Gazebo仿真雷达配置雷达传感器信息xacro文件集成启动仿真环境 Rviz显示雷达数据 摄像头信息仿真以及显示Gazebo仿真摄像头新建xacro文件,配置摄像头传感器信息xacro文件集成启动仿真环境 Rviz显示摄像头数据 kinect信息仿真以及显示Ga…

第五章 I/O管理 九、磁盘的结构

目录 一、概念 二、磁盘的物理地址 1、定义: 2、图像: 如何读取一个“块”: 三、磁盘的分类 四、总结 一、概念 磁盘是由多个盘片和读写磁头组成的,每个盘片都有自己的读写磁头。盘片表面被划分成许多同心圆的磁道&#xff…

JS逆向爬虫---请求参数加密① 【某度翻译】

接口定位 抓包输入翻译关键词 全局搜索关键词,定位到接口https://fanyi.baidu.com/v2transapi 全局搜索sign 多次尝试定位变化参数sign 断点调试b函数 估值整个function,并测试函数运行结果 缺少r参数,可以通过多次输入调试,定位r参数的…

微服务初始和Nacos安装

一)初始微服务: 微服务是将一个大型的,单一的应用程序拆分成多个小型服务,每一个服务负责于特定的业务功能,并且可以通过网络来和其他服务进行通讯,是一个思想,将一个大的项目拆分成多个小的项目,多个小的项…

Android裁剪图片之后无法加载的问题

适配Android11之后更改了图片保存目录,导致裁剪之后图片一直无法加载(fileNotfound) 最主要的问题在于保存裁剪文件的目录不能为私有目录,因为裁剪工具是系统工具,无法直接访问项目本身的私有目录。 解决办法&#x…

【ChatGPT从瀑布模式到水母模式】如何赋能软件研发全流程?

【文末送书】今天推荐一本强大工具书《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》,本文将从其亮点与结构出发,详细阐发其对于运维、项目经理、程序员等的重要性与益处。 文章目录 导语内容作者简介专家推荐读者对象直播预告文…

apache seatunnel支持hive jdbc

上传hive jdbc包HiveJDBC42.jar到seatunel lib安装目录 原因是cloudera 实现了add batch方法 创建seatunnel任务文件mysql2hivejdbc.conf env {execution.parallelism = 2job.mode = "BATCH"checkpoint.interval = 10000 } source {Jdbc {url = "jdbc:mysql:/…

代购商城源码是否可以定制开发?

定制开发,符合个性需求 代购商城源码是现代电子商务中的重要工具,它为代购商提供了建立在线店铺、管理产品和订单、处理支付和物流等功能。然而,对于不同的代购商而言,在源码的基础上进行个性化定制开发无疑是提升竞争力和用户体验…

这个学习方式,用的太及时了!

学校思政学习是培养未来社会精英、提升学生政治觉悟的重要环节。在学生的成长过程中,思政学习扮演着至关重要的角色,不仅有助于提高学生的政治素质,还能够培养他们的思维能力、价值观念,使他们更好地为社会和国家的发展贡献力量。…

[架构之路-248/创业之路-79]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 供应链管理

目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 供应链管理 1.1 什么是供应链与供应链管理What 1.2 为什么需要供应链管理系统Why? 1.3 谁需要供应链管理系统who? 1.4 供应链管理在企业管理中的位置where 1.5 什…

漆料店信息展示服务预约小程序的作用是什么

漆料在工程、家庭装修等场景中都是不可缺的,而在种类/品牌方面更是众多,无论厂家直营店还是经销商,市场中都有很多,在生意方面,尤其是较大的店面,除了本地生意,外地客户也有一定拓展。 但由于种…

云尘-AI-Web-1.0

继续! 开扫 继续先测试web sql注入 直接sqlmap跑 通过注入 (sqlmap查询方式省略) 存在systemuser 不知道会不会是电脑的密码 我们解密一下然后直接试试看 然后失败 这里就没有思路了 但是我们刚刚存在一个目录 我们再扫扫看 无果 换另一个…

VScode远程连接错误:进程试图写入不存在的管道

使用VScode连接树莓派时,出现远程连接错误:进程试图写入不存在的管道 解决方案: (1)可以进入config所在文件夹,删除文件 (2)无法解决的化尝试下述方法 输入 Remotting-SSH:Settin…

Grafana 图表 Table 根据 Key 修改背景颜色

文章目录 前言1. 配置过程1.1 创建 override1.2 Add override property1.3 Value mappings 2. 效果展示 前言 需要配置一个备份任务的 Dashboard 展示备份的状态,如果备份状态是 Completed 表示正常(绿色背景),如果是 Error 表示…

041-第三代软件开发-QCustcomPlot波形标注

第三代软件开发-QCustcomPlot波形标注 文章目录 第三代软件开发-QCustcomPlot波形标注项目介绍QCustcomPlot波形标注效果初始化绘制 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML…

Python 中__name__ == ‘__main__‘使用说明

在学习C语言的时候,程序的运行是从main函数开始的,因此,功能代码一般写到main函数中,子程序如果想要调用,也需要在main函数中进行调用。 然而,Python语言中,程序从第一行就开始执行(定义函数除外…

我和云栖有个约会

开端,似曾相识的云栖 2023年阿里云云栖大会在云栖小镇举办,云栖小镇?在2020年的时候,曾经来过这里参加竞赛。时隔三年,身份变换,以开发者的身份,收到阿里云开发者社区的邀请,正好有…

探求flutter全栈开发

显示一种网络图片 import package:flutter/material.dart; main(){runApp(MaterialApp(theme: ThemeData.dark(),home:Home(),));}class Home extends StatelessWidget{overrideWidget build(BuildContext context) {// TODO: implement buildreturn Scaffold(appBar:AppBar(t…