k8s-pod的控制器

pod控制器的概念

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

预期状态

1、副本数

2、容器的重启策略

3、镜像拉取策略

pod出现故障时的重启等等

pod控制器的类型

1、replicaSet 指定pod副本的数量

三个组件

1、pod的副本数
2、标签选择器,判断那个pod归自己管理
3、扩缩容

2、Deployment控制器,它是工作在replicaSet之上,管理无状态应用,目前是最好的控制器,支持滚动更新和回滚,提供声明式配置

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

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

ingress logstash flannel

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

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

pod与控制器之间的关系

1、controller-manager,管理控制器

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

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

statfulSet	有状态的应用,pod的名称是有序的,所有pod都是独立的,存储卷也是独立的
顺序0-n,delete删除也不会改变pod序号,扩缩容也是有序扩缩容apiVersion: v1
kind: Service
metadata:name: nginx-weblabels:app: nginx2
spec:ports:- port: 80targetPort: 80clusterIP: ""selector:app: nginx2
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: weblabels:app: nginx2
spec:replicas: 3selector:matchLabels:app: nginx2serviceName: "nginx-web"template:metadata:labels:app: nginx2spec:containers:- name: nginximage: nginx:1.22volumeMounts:- name: htmlmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: htmlspec:accessModes: ["ReadWriteMany"]resources:requests:storage: 2Giheadless service 无头服务,没有clusterIP
必须要有动态的pvcheadless service  k8s集群当中一种特殊的服务类型,不分配ClusterIp给service,也不会负载均衡到后端的pod
DNS来提供服务的发现和访问
由于ClusterIP的是空,k8s集群会给每个headless service中的pod创建一个DNS记录
格式:pod-name.headless-service-name.namespace.svc.cluster.localweb-0  nginx-web   default  本地地址(pod的IP地址)通过DNS直接解析访问pod的IP地址web-0  IP地址
为什么要用headless?

有序,独立个体

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

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

为什么要有volumeClaimTemplates?

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

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

statefulSet运用场所
1、不是固定节点的应用,不是固定IP的应用
2、更新发布比较频发
3、支持自动伸缩,节点的资源不够,可以自动扩容

3、daemonset 确保每个节点上都运行一个pod副本,当node加入集群,也会为他新增一个pod

当pod节点从集群当中移除时,pod也会被回收
daemonset不需要指定调度策略,默认会在每个节点创建一个pod,除非污点
apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-deamonlabels:app: nginx1
#提高代码的可读性,别人读,不同业务可以通过namespace隔离,命名时要根据业务专业命名
spec:selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginximage: nginx:1.22我们也可以通过指定的方式,只把daemonset部署在指定的节点
没有副本数选择apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-deamonlabels:app: nginx1
#提高代码的可读性,别人读,不同业务可以通过namespace隔离,命名时要根据业务专业命名
spec:selector:matchLabels:app: nginx1template:metadata:labels:app: nginx1spec:containers:- name: nginximage: nginx:1.22nodeSelector:ingress: "true"控制器类型的资源创建方式:基于控制器创建pod,delete只是相当于重启,要彻底删除pod,必须删除控制器
不要随便的delete

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

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

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

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

第一点:必须指定的容器策略,onfailure Never
apiVersion: batch/v1
kind: Job
metadata:name: centos
spec:template:spec:containers:- name: centosimage: centos:7command: ["/bin/bash","-c","test -e /etc/passwd1"]restartPolicy: Never第二点:执行失败的次数也是受限的,默认是6次
apiVersion: batch/v1
kind: Job
metadata:name: centos
spec:template:spec:containers:- name: centosimage: centos:7command: ["/bin/bash","-c","test -e /etc/passwd"]restartPolicy: NeverbackoffLimit: 4
#允许任务失败的次数是4次,4次到了之后,restartPolicy的策略,来进行容器的重启或者不重启第三点:更新yaml文件,先删除任务,再更新,不能动态更新删除
kubectl delete jobs.batch centos 

5、cronjob:周期性任务,定时执行,和Linux的crontab一模一样,语法一样(分时日月周)

应用场景
1、定时备份 
2、通知作用
3、定时检测(结合探针一起做)可选字段(可以不加)concurrencyPolicy: Allow
#如果执行失败的任务的保留的个数,默认是1个startingDeadlineSeconds: 15
#pod启动之后必须在一定时间内开始执行,如果超过15秒没有运行,任务将不会执行,任务标记也会失败successfulJobHistoryLimit:3
#保留成功的任务数,默认值就是3apiVersion: batch/v1beta1
kind: CronJob
metadata:name: hello
spec:
#定时任务的调度命令schedule: "*/1 * * * *"concurrencyPolicy: Allow
#如果执行失败的任务的保留的个数,默认是1个startingDeadlineSeconds: 15
#pod启动之后必须在一定时间内开始执行,如果超过15秒没有运行,任务将不会执行,任务标记也会失败successfulJobHistoryLimit:3
#保留成功的任务数,默认值就是3jobTemplate:spec:template:spec:containers:- name: helloimage: centos:7command: ["/bin/bash","-c","date; echo 小布"]restartPolicy: Never删除
kubectl delete cronjobs.batch hello

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

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

相关文章

深入浅出关于go web的请求路由

文章目录 前言一、是否一定要用框架来使用路由?二、httprouter2.1 httprouter介绍2.2 httprouter原理2.3 路由冲突情况 三、gin中的路由总结 前言 最近重新接触Go语言以及对应框架,想借此机会深入下对应部分。 并分享一下最近学的过程很喜欢的一句话&am…

架构的未来:微前端与微服务的融合

目录 前言 微服务架构简介 微前端架构简介 微前端与微服务的融合 1. 共享服务 2. 基于事件的通信 3. 统一的身份和认证 4. 交付管道的集成 示例:使用微服务和微前端的电子商务平台 微服务架构 微前端架构 融合微服务和微前端 总结 作者简介…

rollup + typescript 搭建项目

一、创建项目 1、初始化项目 1、创建一个项目目录,进入该目录 2、执行 npm init -y 生成 package.json 3、执行 tsc --init 生成 tsconfig.json 2、安装依赖 (1)安装 typescript 和 rollup-plugin-typescript npm install -D typescript …

明明的随机数【C语言】

【华为机试题 HJ3】明明的随机数 描述输入描述:示例1参考代码1参考代码2描述 明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。 数据范围: 1≤ n ≤1000 ,输入…

【打卡】牛客网:BM93 盛水最多的容器

题目: 考虑到盛水容器的特殊性。双指针从最两边开始遍历,遍历过程中舍弃最小的。 不知道原理。 模板的: class Solution { public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*…

数学建模 | 数学建模常用的十种解题方法

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 数学建模常用的十种解题方法 摘要一、蒙特卡罗算法1 蒙特卡罗计算重积分…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图的圆切图,Kotlin(4)

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图的圆切图,Kotlin(4) 这篇 Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin&am…

C语言详解之一维数组二维数组以及变长数组

一周新的开始,今天的你学习了吗? 前言 今天打算把数组的相关知识知识复习一下,比如初始化,调用,以及他和指针的关系等等 数组是什么 数组是一种数据结构,它由相同类型的元素组成,并按照一定的…

burp靶场-path traversal

路径遍历 1.路径遍历漏洞 ### 什么是路径遍历 路径遍历也称为目录遍历。这些漏洞使攻击者能够读取正在运行应用程序的服务器上的任意文件。这可能包括&#xff1a; 应用程序代码和数据。 后端系统的凭据。 敏感的操作系统文件。### <img src"/loadImage?filename218…

springCould中的Stream-从小白开始【12】

&#x1f95a;今日鸡汤&#x1f95a; 见过一些人&#xff0c;他们朝九晚五&#x1f62d;&#xff0c;有时也要加班&#xff0c;却能把生活过得很&#x1f60e;有趣。他们有自己的爱好&#xff0c;不怕独处。他们有自己的坚持&#xff0c;哪怕没人在乎。&#x1f926;‍♂️ 开心…

FASTQ 文件压缩格式有哪些?

FASTQ 文件压缩格式 .gz .bz2 .xz .rfq .rfq.xz FASTQ 文件是用于存储测序数据的一种格式&#xff0c;它包含了大量的文本信息&#xff0c;因此通常占用大量的存储空间。为了有效地处理和传输这些数据&#xff0c;通常需要对 FASTQ 文件进行压缩来节省存储空间及传输带宽。以下…

xbox如何提升下载速度?

提高Xbox的下载速度可以通过以下几种方法&#xff1a; 连接稳定的网络&#xff1a;使用有线以太网连接而不是无线连接&#xff0c;因为有线连接通常更稳定且速度更快。 关闭正在运行的游戏和应用程序&#xff1a;运行游戏或应用程序会消耗网络资源和处理能力&#xff0c;关闭它…

Qt点击按钮在其附近弹出一个窗口

效果 FS_PopupWidget.h #ifndef FS_POPUPWIDGET_H #define FS_POPUPWIDGET_H#pragma once#include <QToolButton> #include <QWidgetAction> #include <QPointer>class QMenu;class FS_PopupWidget : public QToolButton {Q_OBJECTpublic:FS_PopupWidget(QW…

Linux Kdump分析宕机问题案例

文章目录 1. 查看问题原因2. 找出哪一行代码触发的宕机3. 查看宕机函数传入参数的值方法一&#xff1a;使用struct查看结构体的值方法二&#xff1a;使用rd命令查看对应内存的值 1. 查看问题原因 GNU gdb (GDB) 7.6 Copyright (C) 2013 Free Software Foundation, Inc. Licens…

PXE 高效批量网络装机

前提&#xff1a; 虚拟机恢复到初始化 调整网卡为vm1 关闭防火墙 安全linux systemctl stop firewalld vim /etc/selinux/config 配置IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33 重启网卡 systemctl restart network 挂载磁盘 安装yum源 安装服务 yum install vs…

Redis相关命令详解及其原理

Redis概念 Redis&#xff0c;英文全称是remote dictionary service&#xff0c;也就是远程字典服务。这是kv存储数据库。Redis&#xff0c;包括所有的数据库&#xff0c;都是请求-回应模式&#xff0c;通俗来说就是数据库不会主动地要给前台推送数据&#xff0c;只有前台发送了…

美团2024届秋招笔试第一场编程真题(js版本)

1.小美的外卖订单 简单的加法逻辑&#xff0c;需要注意的是各个数据的边界问题 折扣价不能超过原价减的价格不能超过满的价格满减优惠仅限原价购入 const rl require("readline").createInterface({ input: process.stdin }); void (async function () {let count…

ENVI5.6版本中规则与不规则图像裁剪操作

图像裁剪的目的是将研究之外的区域去除&#xff0c;常用的是按照行政区划边界或自然区划边界进行图像的裁剪&#xff0c;在基础数据生产中&#xff0c;还经常要做标准分幅裁剪。按照ENVI的图像裁剪过程&#xff0c;可分为规则裁剪和不规则裁剪。 ENVI5.6之前版本的图像裁剪工具…

linux基础学习(3):挂载

挂载可以理解为给磁盘空间一个可访问的入口&#xff0c;那个入口称为挂载点&#xff0c;相当于windows中的盘符。 1.挂载命令mount 1.1直接输入mount 查看系统已挂载的设备 1.2挂载与卸载命令 mount -t 文件系统名 设备文件名 挂载点 | umount 挂载点 或 umount 设…