pod控制器的作用

pod控制器的作用

1、动态pv和pvc

deployment是控制器

pod空气器:工作负载,workload用于管理pod的中间层,确保podi资源符合预期的状态

预期状态

1、·副本数

2、容器重启策略

3、镜像拉取策略

pod、出现故障时重启等等

pod的控制器类型

1、replicaset:指定pod的副本数量

三个组件:

pod的副本数

标签的选择器,判断哪个pod归自己管理

扩缩容

2deployment控制器,他是工作在repalicaset之上,管理无状态应用,目前是最好的控制器,支持滚动更新和回滚

提供声明式配置

3、statefulSet:也是控制器的一种,管理有状态的应用,也可以设置副本数,可以扩缩容,pod之间的序号是固定的,重启之后pod的名称也不会发生变化,有状态

4、DaemonSet:可以在所有节点部署一个pod,他没有副本数,可以限制部署的节点。也是无状态应用,服务必须是守护进程

ingress logstash flannel

5、job:工作pod控制器,执行完成即可退出,不要重启,不需要构建

6、cronjob:周期性的定时任务控制器,不需要再后台持续运行

pod与控制器之间的关系:

1、controllers;管理控制器。

pod通过label----->selector进行关联。

startegy:

  rollingUpdata:

​    maxSurge:25%

​    maxUnavailable:25%

这是Deployment的默认更细策略

rollingUpdate:滚动更新

​    maxSurge:25%:升级过程中,新启动的pod数量不能超过期望pod数的25%

,不能超过25%

 maxUnavailable:25%:升级过程中新的pod启动好之后,销毁的旧的pod数量不能超过期望pod25%

2、无状态应用;pod名称是无序的,认为所有pod都是一体的,包括共享存储NFS,

所有deployment下的pod都共享一个存储。

statfulSet:有状态的应用。pod名称有序的,所有pod都是独立的,存储卷也是独立的

顺序0-n,delete删除也不会改变pod的序号,扩缩容也是有序的扩缩容

headless-service:无头服务,没有clusterIp,必须要有动态pvc

apiVersion: v1
kind: Service
metadata:
  name: nginx-web
spec:
  ports:
  - port: 80
    targetPort: 80
  clusterIP: ""
  selector:
    app: nginx1

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  labels:
    app: nginx2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginc-sts
  serviceName: "nginx-web"
  template:
    metadata:
      labels:
        app: nginx2
    spec:
      containers:
      - name: nginx
        image: nginx:1.22
        volumeMounts:
        - name: html
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: html
    spec:
      accessModes: ["ReadWriteMany"]
      storageClassName: "nfs-client-storageclass"
      resources:
        requests:
          storage: 2Gi

headless service:k8s集群当中一种特殊的服务类型,不分配Cluseter给service:也不会负载均衡到后端的pod,DNS来提供服务的发现和访问

由于Clusterip的是空,k8s集群会给每个headless service中的pod创建一个dns记录

格式:pod-name.headless-service-name.namespace.svc.cluster.local.

记录了 web-0 nginx-web defaults 本地地址(pod的ip地址)

通过dns直接解析访问pod的IP地址

web-0 10.244.10 做一个地址映射

为什么要用healdless:

有序,独立个体

deployment的pod是没有名称的,随机字符串,无序,他需要一个集中的clusterip来集中统一为pod提供网络

statefulset是有序的,pod的名称是固定的,重建之后pod的标识符也不变,pod的名称是唯一的标识符

系统直接通过pod名称直接解析ip地址。 ip会不会变

为什么要有volumeClaimTemplates:

有状态的副本集群都会涉及持久化存储,每个pod的都是独立个体,每个pod都有一个自己的专用的存储点

statefulset在定义的时候就规定了每个pod是不能使用同一个存储卷,所以才需要动态pv

不是是固定节点的应用,不是固定ip的一个用

更新发布比较频繁

支持自动伸缩,节点的资源不过,可以自动扩容

4、job:分为两类 job普通任务 cronjob定时任务

常用于运行那些仅需要执行一次的任务

应用场景:数据库迁移、批处理脚本执行、视频解码业务

对于k8s系统来说,既然定义了job,只需要执行一次或者指定次数即可,不能一直运行。

第一点:必须要指定容器的重启策略 onfailure和Never

第二点:执行失败的次数也是受限的,默认是6次,但是可以指定用backoffLimit:

backoffLimit: 4 #允许失败的次数是4次,4次之后,restartPolicy策略,来进行容器的重启或者不重启。

第三点:更新yaml文件。必须要先删除任务,再更新,不能动态更新的。

容器化部署,部署过数据库吗:

数据库是核心资产,不会容器化部署

5、cronjob:周期性任务,像linux的crontab一样语法一样:分 时 日 月 周

应用场景:如通知、定时备份 定时检测(结合探针一块做)

总结:

这五个都是控制器创建的pod,都是依赖于控制器

deployment:典型的无状态的应用,最好用的,也是最多的

statefulSet:有状态应用,有序的独立的pod

daemonSet:无状态应用,不能定义副本数,每个节点都运行一个pod,也可以指定节点

job:执行一次性的任务,必须要有重启策略,同时注意默认失败次数为6次。只有失败次数达到了,重启策略才会生效

cronjob:定时任务

写一个yaml用cronjob定期检测80端口是否存活 ,在加上存活探针检测80端口,用到tcpSocker

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: hello
        spec:
          containers:
          - name: hello
            image: nginx:1.22
            command: ["/bin/bash", "-c", "date; echo hello is ok"]
            livenessProbe: #定义存活探针
              tcpSocket:
                port: 80
          restartPolicy: Never
      backoffLimit: 4 #允许任务失败的4次,4次后restartPolicy策略。来进行容器的重启或
不重启
~                                                                                   
~                                                                                   
~                                        

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

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

相关文章

Spring MVC文件上传及全局异常处理器

添加依赖 <!--文件上传--> <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version> </dependency>配置文件上传解析器 <!--配置文件上传解析器-…

mysql复制表的几种常用方法

遇到需要拷贝一个表及其数据的情况,总结了一下几种方法 1.使用 show create table 旧表 将结果拷贝出来,将旧表名换成新表名即可. 注意:该方法仅适用于拷贝表结构,不需要同步数据的情况 show create table 旧表名2.create table 新表 like 旧表 该语句将完全拷贝旧表结构, …

RT-Thread: 控制台调试串口波特率更改

说明&#xff1a;rt_kprintf 函数是RT 的一个调试接口使用的函数&#xff0c;波特率默认是 115200 &#xff0c;本文介绍更改这个波特率。 1.根据截图路径找到文件 serial.h 修改如下代码中关于波特率定义部分。 /* Default config for serial_configure structure */ #defin…

华为设备端口镜像设置

核心代码&#xff1a; observe-port int 编号 int 编号 mirror to observe-port both | inbound | outbound #both:将镜像端口的入和出流量同时复制到观察者端口 #inbound:将镜像端口的入流量复制到观察者端口 #outbound:将镜像端口的出流量复制到观察者端口配置后可使出入端口…

NLP论文阅读记录 - 2021 | WOS HG-News:基于生成式预训练模型的新闻标题生成

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 HG-News: News Headline Generation Based on a Generative Pre-…

特征工程-特征处理(二)

特征处理 二、时间特征处理 将原本的具体时间拆分为年月日等多个特征变量&#xff0c;同时可以引入在一天的某个时间段&#xff0c;或者是当天是否为节假日等其他条件&#xff0c;还可以进一步结合其他特征&#xff0c;进行前后一个时间段或是多个时间段时间的特征差值。 dt.…

初学者学习质量管理应怎样做?

建议有时间可以去学习下PMP的课程&#xff0c;里面包含质量管理&#xff0c;且是系统性的知识体系&#xff0c;都用得到的。 分享下质量管理七大工具&#xff0c;也是很好用的工具&#xff0c;可以学习下&#xff1a; 1. 因果图(鱼骨图) 因果图又称鱼骨图、石川图。它将问题…

如何在 SwiftUI 中使用 AccessibilityCustomContentKey 修饰符

文章目录 前言创建 User 结构体添加辅助修饰符使用新的修饰符使用修饰符来替换和覆盖数据可运行代码总结 前言 SwiftUI 3 发布了许多新的辅助功能 API&#xff0c;我们可以利用这些 API 以轻松的方式显著提高用户体验。本篇文章来聊聊另一个新的 API&#xff0c;我们可以使用 …

测试工程师必会能力之缺陷分析入门

缺陷分析也是测试工程师需要掌握的一个能力&#xff0c;但是很多时候大家只记得要提交缺陷、统计缺陷情况&#xff0c;而忽视了缺陷分析。 其实每个项目的缺陷记录都是有很大价值的&#xff1a; 在测试阶段分析当前缺陷情况&#xff0c;及时发现存在的问题并调整测试策略&…

2020年财政收支

偶感兴趣&#xff0c;花了点时间整理 有兴趣的可以参照下面的链接整理完整2022年的数据&#xff0c;2023年的数据还有12月份的数据未出&#xff0c;估计在这几天出。 附 2022年的财政收支情况 2022年基金支出预算表 2020年的社保收入是7.6万亿。 上图个税金额写错了&#xff0c…

软件测试|使用matplotlib绘制多种折线图

简介 在数据可视化领域&#xff0c;Matplotlib是一款非常强大的Python库&#xff0c;它可以用于绘制各种类型的图表&#xff0c;包括折线图。本文将介绍如何使用Matplotlib创建多种不同类型的折线图&#xff0c;并提供示例代码。 创建模版 在绘图之前&#xff0c;我们可以先…

9 微信小程序

拍卖功能 9 拍卖今日概要今日详细1.celery1.1 环境的搭建1.2 快速使用1.3 django中应用celery1.4 celery定时执行1.5 周期性定时任务 2.拍卖业务2.1 表结构2.2 数据初始化2.3 接口 9 拍卖 各位小伙伴想要博客相关资料的话关注公众号&#xff1a;chuanyeTry即可领取相关资料&…

二叉树简介

二叉树 二叉树是每个节点最多有两个子树的树结构&#xff0c;通常子树被称作“左子树”和“右子树”。 二叉树的遍历 二叉树的遍历主要有三种方式&#xff1a;前序遍历、中序遍历和后序遍历。 前序遍历&#xff1a;访问根节点 --> 遍历左子树 --> 遍历右子树中序遍历&…

基于AI视频智能分析技术的周界安全防范方案

一、背景分析 随着科技的不断进步&#xff0c;AI视频智能检测技术已经成为周界安全防范的一种重要手段。A智能分析网关V4基于深度学习和计算机视觉技术&#xff0c;可以通过多种AI周界防范算法&#xff0c;实时、精准地监测人员入侵行为&#xff0c;及时发现异常情况并发出警报…

SeaTunnel 海量数据同步工具的使用(连载中……)

一、概述 SeaTunnel 是一个非常易用&#xff0c;高性能、支持实时流式和离线批处理的海量数据处理产品&#xff0c;前身是 WaterDrop &#xff08;中文名&#xff1a;水滴&#xff09;&#xff0c;自 2021年10月12日更名为 SeaTunnel 。2021年12月9日&#xff0c;SeaTunnel 正式…

数字化和信息化概念

数字化和信息化&#xff0c;是两个不同的概念&#xff0c;它们各自有着特定的含义和应用场景。 1、数字化 数字化指的是将物理实体、过程或数据转化为数字形式的过程。这一过程中可能包括将纸质文档转化为电子文件、模拟信号转换成数字信号&#xff0c;或者是将实物产品转变…

RT-Thread: eeprom存储芯片 at24cxx软件包使用流程

说明&#xff1a;介绍 i2c 通讯接口的 eeprom at24cxx 读写测、试代码&#xff0c;代码基于 at24cxx 软件包实现。 使用步骤&#xff1a; * 1&#xff1a;在 RT-Thread Settings 中开启 【软件模拟I2C】 * 2&#xff1a;在 RT-Thread Settings 软件包中搜索 at24cxx 添加软件…

深入理解零拷贝技术

注意事项&#xff1a;除了 Direct I/O&#xff0c;与磁盘相关的文件读写操作都有使用到 page cache 技术。 粉丝福利&#xff0c; 免费领取C/C 开发学习资料包、技术视频/代码&#xff0c;1000道大厂面试题&#xff0c;内容包括&#xff08;C基础&#xff0c;网络编程&#xff…

浅讲人工智能,初识人工智能几个重要领域。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

PTA-7-4 堆排序

代码如下: #include<iostream> using namespace std; void change(int arr[], int n, int i); int main() {int n,i,end,arr[1000];cin >> n;for (i 0; i < n; i){cin >> arr[i];}//进行一次排序,把最大值放到顶端for (i n/2-1; i > 0; i--){change…