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:定时任务,主要就是通知,备份或者探测

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

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

相关文章

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-17 串讲

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-17 串讲

uniapp + node.js 开发问卷调查小程序

前后端效果图 后端&#xff1a;nodejs 12.8 ; mongoDB 4.0 前端&#xff1a;uniapp 开发工具&#xff1a;HBuilderX 3.99 前端首页代码 index.vue <!-- 源码下载地址 https://pan.baidu.com/s/1AVB71AjEX06wpc4wbcV_tQ?pwdl9zp --><template><view class&q…

ubuntu系统(10):使用samba共享linux主机中文件

目录 一、samba安装步骤 1、Linux主机端操作 &#xff08;1&#xff09;安装sabma &#xff08;2&#xff09;修改samba配置文件 &#xff08;3&#xff09;为user_name用户设置samba访问的密码 &#xff08;4&#xff09;重启samba服务 2、Windows端 二、使用 1、代码…

CMake TcpServer项目 生成静态库.a / 动态库.so

CMake 实战构建TcpServer项目 静态库/动态库-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135608829?spm1001.2014.3001.5501 在这篇博客的基础上&#xff0c;我们把头文件放在include里边&#xff0c;把源文件放在src里边&#xff0c;重新构建 hehedali…

网页设计(一)开发环境配置与HTML基础

一、使用HBuilderX创建项目和文件 加粗样式HX创建HTML文档的模板位置 template.html模板内容 1.创建HTML项目 创建项目引导界面 新建项目窗口 Web-2009030199项目所在位置图 2.在项目下新建prj_1_2.html文件 创建文件引导界面 新建html文件界面 3.新建prj_1_2.ht…

什么是DNS(域名系统)

域名系统&#xff08;DNS&#xff09;像是互联网的电话簿&#xff0c;将人们容易记住的网址转换成计算机能理解的IP地址。 没有DNS&#xff0c;我们就需要记住复杂的数字序列来访问网站 DNS的基本概念 定义&#xff1a;DNS是一个分布式数据库&#xff0c;它将域名&#xff08…

智能小程序小部件(Widget)导航、地图、画布等组件,以及开放能力、原生组件说明

智能小程序小部件(Widget)导航、地图、画布等组件&#xff0c;以及开放能力、原生组件说明。 导航组件 navigator 页面链接&#xff0c;控制小程序的跳转。navigator 子节点的背景色应为透明色。 属性说明 属性名类型默认值必填说明urlstring是跳转地址deltanumber1否当 …

【开发实践】前端jQuery+gif图片实现载入界面

一、需求分析 载入界面&#xff08;Loading screen&#xff09;是指在计算机程序或电子游戏中&#xff0c;当用户启动应用程序或切换到新的场景时&#xff0c;显示在屏幕上的过渡界面。它的主要作用是向用户传达程序正在加载或准备就绪的信息&#xff0c;以及提供一种视觉上的反…

Vue3中provide,inject使用

一&#xff0c;provide,inject使用&#xff1a; 应用场景&#xff1a;向孙组件传数据 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;isRef&#xff0c;provide, inject 1.provide,inject使用 a.爷组件引入 import {ref,provide} from vue const drinkListre…

Spring Boot 中实现定时任务(quartz)功能实战

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

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE&#xff0c;PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…

第二百七十一回

文章目录 1. 概念介绍2. 实现方法2.1 主要步骤2.1 注意事项 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何加载网络图片"相关的内容&#xff0c;本章回中将介绍如何加载本地图片.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回…

Scrum敏捷研发管理解决方案

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c;提质增效、缩短周期、加速创新…

力扣刷MySQL-第一弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

C++学习笔记(四十二):c++ 结构化绑定

本节介绍c结构化绑定&#xff0c;改知识点是c17中增加的新特性&#xff0c;主要是用来处理c多返回值的问题。 原来c17之前返回多个值的方法之前专门有一节内容在描述&#xff0c;简单回顾一下原来使用tuple返回多个返回值的方法&#xff0c;代码如下&#xff1a; #include &l…

条件风险价值CVaR内容介绍(MATLAB例程)

在对微电网优化调度过程中&#xff0c;由于新能源机组出力和负荷的不确定性&#xff0c;若采用确定性的优化调度方案会存在一定的风险。当风电和光伏输出功率的实际值低于预测值时&#xff0c;需要增加可控机组出力或切除部分负荷&#xff1b;反之&#xff0c;若风电和光伏输出…

Mybatis----面向接口

让mybatis自动生成dao层接口的实现类 这是dao层接口的实现类&#xff0c;在mybatis中我们可以省略这种实现接口的方式&#xff0c;直接面向接口操作数据库&#xff0c;mybatis可以帮我们自动生成接口的实现类&#xff0c;也就是下面这个实现类mybatis帮我们生成了。 1、修改se…

如何提高匹配的速度

基于形状的匹配&#xff0c;改进了无数次&#xff0c;其实已经很满意了。 想起刚入门机器视觉那会儿&#xff0c;我们写的代码&#xff0c;无论c还是c#的&#xff0c;都是调用人家的函数&#xff0c;从来没想过&#xff0c;自己有一天把这些函数代替了。 那时候调用evision的…

ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的&#xff0c;文档是所有数据存储&#xff0c;搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…

读书笔记:单载波频域均衡技术 SC-FDE

原文&#xff1a;https://mp.weixin.qq.com/s?__bizMzU5NzgxNDgwMg&mid2247486891&idx1&sn51e0dc3d28bcf356126dc8ae922f5533&chksmfe4cf6d6c93b7fc0237d4e2107b5671a401db8ed7a8527159ef18333d2b1f48c56b381f846ae&mpshare1&scene1&srcid0117h6K…