Pod控制器:

Pod控制器:

Pv pvc 动态PV

Pod控制器:工作负载。WordLoad,用于管理pod的中间层 ,确保pod资源符合预期的状态

预期状态:

  1. 副本数
  2. 容器的重启策略
  3. 镜像的拉取策略

Pod出现故障时的重启等等

Pod控制器的类型:

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

三个组件:

  1. pod副本数
  2. 标签选择器,判断哪个pod归自己管理、
  3. 扩缩容
  1. deployment控制器,他是在replicaset之上,管理无状态应用,目前是最好的控制器,支持滚动更新和回滚,挺供声明式配置
  2. Statefulset:控制器的一种,管理有状态的应用,也可以设置副本数,可以扩缩容,pod的序号是固定的,重启之后,pod的名称也不会发生变化
  3. Daemonset:可以在所有节点部署一个pod,没有副本数,可以限制部署的节点,也是无状态的应用,服务必须是一个守护进程ingress logstash flannel
  4. Jobs:工作pod控制器,执行完成即可退出,不需要重启,不需要重建
  5. Cronjob:周期性的定时任务控制器,不需要在后台持续运行

Pod和控制器之间的关系:

  1. controllers:管理控制器,pod通过label------>selector进行关联

每次有更新,都会把旧的pod全部停止,然后再启动新的实力,服务可能会短暂中断

解析:

Strategy:

RollingUpdate:

 MaxSurge:25%

 Maxunavailable:25%

这是deployment的默认更新策略

RollingUpdate:滚动更新

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

  1. 无状态应用,pod名称是无序的,任务所有pod的都是一体的,共享存储NFS,所有deployment下的pod共享一个存储

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

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

创建一个有状态应用的控制器:

Headless service:无头服务

前提特点:必须要有动态PVC,没有ClusterIP

apiVersion: v1

kind: Service

metadata:

  name: nginx-web

  labels:

    app: nginx2

spec:

  ports:

  - port: 80

    targetPort: 80

  clusterIP: ""

  selector:

    app: nginx2

---

apiVersion: apps/v1

kind: StatefulSet

metadata:

  name: web

  labels:

    app: nginx2

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx2

  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集群当中一种特殊的服务类型,不分配ClusterIP给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地址

为什么要用无头协议呢?

有序,独立个体

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

Statefulset是有序的,,pod的名称是固定的,重建之后pod的标识也不变,pod名称也是唯一的标识,系统直接通过pod名称解析IP地址

为什么要有volumeClaimCliamTemplates:

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

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

应用场景:

不是固定节点的应用,不是固定IP的应用

更新发布比较频繁

支持自动伸缩,节点资源不够,可以自动伸缩

如何删除呢

DaemonSet控制器:

核心机制就是确保每个节点上都运行一个pod副本,当node加入集群,也会为他新增一个pod,当node节点从集群当中移除时,pod也会被回收

如何部署daemonset?

apiVersion: apps/v1

kind: DaemonSet

metadata:

  name: nginx4-daemon

  labels:

    app: nginx4

spec:

  selector:

    matchLabels:

      app: nginx4

  template:

    metadata:

      labels:

        app: nginx4

    spec:

      containers:

      - name: nginx4

        image: nginx:1.22

分别部署在三个节点上

如何指定节点部署:

apiVersion: apps/v1

kind: DaemonSet

metadata:

  name: nginx4-daemon

  labels:

    app: nginx4

spec:

  selector:

    matchLabels:

      app: nginx4

  template:

    metadata:

      labels:

        app: nginx4

    spec:

      containers:

      - name: nginx4

        image: nginx:1.22

      nodeSelector:

        ingress: "true"

写标签

DaemonSet不需要指定调度策略,默认会在每个节点创建一个pod,除非污点

我们可以通过指定的方式,只把daemonset部署在指定的节点,daemonset他是没有副本数的

以上都是基于控制器创建的方式,基于控制器创建的,要彻底删除pod,必须要删除控制器,delete相当于重启(delete慎重使用)

Job:

job分为两类,1. job普通任务 2.定时任务crontob

Job的作用,执行只需要一次性的任务

脚本需要执行,数据库迁移,视屏解码等等业务

apiVersion: batch/v1

kind: Job

metadata:

  name: centos

spec:

  template:

    spec:

      containers:

      - name: centos

        image: centos:7

        command: ["/bin/bash","-c","test -e /etc/passwd"]

      restartPolicy: Never

  backoffLimit: 4

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

第一点:必须指定的容器策略,onfailure(一次失败,退出码非0,就会重启容器) never(是不管容器的重启策略,按照backoffLimit来尝试job任务的重试次数,到了规定的失败次数,不会再继续执行)

第二点:执行失败的次数也是受限制的,默认是6次

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

面试题:

问:容器化部署,部署过数据库没有?

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

前端你们会容器化部署吗?

Nginx可以容器化部署吗,可以

改正确:

报错,已被重命名

删除pod,执行成功

cronjob:

周期性任务,定期执行,和Linux的crontob一模一样,语法一样

分 时 日 月 周

应用场景:定时备份,可以起到一个通知作用,也可以理解为定时监测(结合探针一起做)

始终会保留三个副本:

如何删除呢

apiVersion: batch/v1beta1

kind: CronJob

metadata:

  name: hello

spec:

  schedule: "*/1 * * * *"

  concurrencyPokicy: Allow

  startingDeadlineSeconds: 15

  successfulJobsHistoryLimit: 3

  jobTemplate:

    spec:

      template:

        spec:

          containers:

          - name: hello

            image: centos:7

            command: ["/bin/bash","-c","date; echo 科比"]

          restartPolicy: Never

总结一下:

五个都是控制器创建的pod

都是依赖于控制器

Deployment:无状态应用,最好用的,也是最多的

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

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

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

Cronjob:定时任务,主要就是通知,备份或者探测

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

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

相关文章

【大数据】Flink 详解(八):SQL 篇 Ⅰ

《Flink 详解》系列(已完结),共包含以下 10 10 10 篇文章: 【大数据】Flink 详解(一):基础篇【大数据】Flink 详解(二):核心篇 Ⅰ【大数据】Flink 详解&…

小程序系列--7.页面导航

一、页面导航 1、 什么是页面导航&#xff1f; 页面导航指的是页面之间的相互跳转。例如&#xff0c;浏览器中实现页面导航的方式有如下两种&#xff1a; <a> 链接 location.href 2. 小程序中实现页面导航的两种方式 二、声明式导航 1. 导航到 tabBar 页面 2. 导航…

Cellinx NVT 摄像机 UAC.cgi 任意用户创建漏洞复现

0x01 产品简介 Cellinx NVT IP PTZ是韩国Cellinx公司的一个摄像机设备。 0x02 漏洞概述 Cellinx NVT 摄像机 UAC.cgi接口处存在任意用户创建漏洞,未经身份认证的攻击者可利用此接口创建管理员账户,登录后台可查看敏感信息,使系统处于极不安全的状态。 0x03 复现环境 FO…

乐意购项目前端开发 #4

一、Home页面组件结构 结构拆分 创建组件 在 views/Home 目录下创建component 目录, 然后在该目录下创建5个组件: 左侧分类(HomeCategory.vue)、Banner(HomeBanner.vue)、精选商品(HomeHot.vue)、低价商品(Homecheap.vue)、最新上架(HomeNew.vue) 引用组件 修改 views/Home…

2. 示例:Spring Boot 入门

1.1 概述 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置 1.2 为什么使用Spring Boot J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 1.3 Spring Bo…

设计模式——组合模式

生活中存在很多 “部分-整体” 的关系&#xff0c;例如&#xff1a;大学中的学校与学院、学院与专业的关系。高楼与楼层和房间之间的关系等等。在软件开发中也有类似的情况。这些简单对象与复合对象之间的关系&#xff0c;如果用组合模式&#xff08;把学校、院、系都看作是组织…

链表练习 Leetcode82.删除排序链表中的重复元素 II

题目传送门&#xff1a;Leetcode82 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&#xff1…

【Linux】Linux 系统编程——cd 命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 “cd 命令&#xff0c;即 ‘change directory’ 的缩写&#xff0c;主要用于 Unix、Linux 和 macOS 等操作系统中&#xff0c;用于改变当前工作目录。该命令支持绝对路径和相对路径两种形式。若未指定…

SpringBoot多环境配置与添加logback日志

1、多环境配置 一个项目会有多个运行环境 所以SpringBoot提供了可以适应多个环境的配置文件 每个文件对应一个端口号 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 在application中选择使用哪个…

线性回归实例

1、线性回归&#xff08;linear Regression&#xff09;和逻辑回归&#xff08;logistic Regression&#xff09;的区别 线性回归主要是用来拟合数据&#xff0c;逻辑回归主要是用来区分数据&#xff0c;找到决策边界。 线性回归的代价函数常用平方误差函数&#xff0c;逻辑回…

AI在保护环境、应对气候变化中的作用

对于AI生命周期数据领域的全球领导者而言&#xff0c;暂时搁置我们惯常的AI见解和AI生命周期数据内容产出&#xff0c;来认识诸如世界地球日这样的自然环境类活动日&#xff0c;似乎是个奇怪的事情。我们想要知道&#xff0c;数据是否真的会影响我们的地球环境&#xff1f; 简而…

5.5G来了!全球首次采用,就在福建

近日&#xff0c;在以滨海风景优美而闻名的福建厦门马拉松赛道沿线区域&#xff0c;福建移动携手华为采用5G-A通感一体技术率先完成了低空多站连续组网的通感能力验证&#xff0c;基于4.9GHz频段实现了对城市低空120米下多无人驾驶飞行器的探测与及时预警。这一成果为城市低空资…

【windows】右键添加git bash here菜单

在vs 里安装了git for windows 后&#xff0c;之前git-bash 右键菜单消失了。难道是git for windows 覆盖了原来自己安装的git &#xff1f;大神给出解决方案 手动添加Git Bash Here到右键菜单&#xff08;超详细&#xff09; 安装路径&#xff1a;我老的 &#xff1f; vs的gi…

Kafka系列(四)

本文接kafka三&#xff0c;代码实践kafkaStream的应用&#xff0c;用来完成流式计算。 kafkastream 关于流式计算也就是实时处理&#xff0c;无时间概念边界的处理一些数据。想要更有性价比地和java程序进行结合&#xff0c;因此了解了kafka。但是本人阅读了kafka地官网&#…

论文笔记:信息融合的门控多模态单元(GMU)

整理了GMU&#xff08;ICLR2017 GATED MULTIMODAL UNITS FOR INFORMATION FUSION&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a; GMU 背景 多模态指的是同一个现实世界的概念可以用不同的视图或数据类型来描述。比如维基百科有时会用音频的混合来描述一个名人…

vue+echarts 几个案例

普通柱状图 <template><!-- 容器默认宽高是0 如果不设置 页面不显示--><div ref"mychart" id"mychart"></div> </template><script> import * as echarts from "echarts" import axios from axiosexport …

(Matlab)基于CNN-Bi_LSTM的多维回归预测(卷积神经网络-双向长短期记忆网络)

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码展示&#xff1a; 四、完整程序数据分享&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平…

数字电源简介

数字电源简介 定义主要应用场景数字电源的基本组成常见算法常见电源拓扑PFCLLC 数字电源与模拟电源对比参考链接 定义 常见定义有以下四种&#xff1a; 通过数字接口控制的开关电源&#xff0c;强调的是数字电源的“通信”功能。可通过I2C或类似的数字总线来对数字信号进行控…

springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available

一、场景 Springboot使用ServerEndpoint来建立websocket链接。引入依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>配置Websocket Confi…

九:day01_ 消息队列01

第一章 RabbitMQ 概念 1.1.1 消息队列 MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信。 1.1.2 消息 两台计算机间传送的数据单位。消息可以非常简单&#xff0c;例如只包含文本字符串&#x…