k8s笔记 | 高度调度
CronJob计划任务
简介:在k8s中周期性运行计划任务,与linux中的crontab相同;注意点 CornJob执行的时间是controller-manager的时间,所以一定要确保controller-manager的时间是准确的,另外cornjob
cron表达式
文章参考
┌─────────────秒 (0 - 59)│ ┌─────────────分钟 (0 - 59)│ │ ┌─────────────小时 (0 - 23)│ │ │ ┌─────────────日 (1 - 31)│ │ │ │ ┌─────────────月 (1 - 12)│ │ │ │ │ ┌─────────────周 (0 - 6) (0 表示周日)│ │ │ │ │ │ ┌─────────────年 (可选,1970 - 2099)│ │ │ │ │ │ ││ │ │ │ │ │ │* * * * * * *
配置文件
cron-job-pd.yaml
apiVersion: batch/v1
kind: CronJob # 定时任务
metadata:name: cron-job-test # 定时任务名字
spec:concurrencyPolicy: Allow # 开发调度策略 Allow允许开发调度,Forbid 不允许开发调度 Replace 如果之前的任务还没有执行完,就直接执行新的,放弃上一个failedJobsHistoryLimit: 1 # 保留多少个失败任务successfulJobsHistoryLimit: 3 # 保留多少个成功任务suspend: false # 是否挂起任务,若为true 则该任务不会执行schedule: "* * * * *" # 调度策略jobTemplate:spec:template:spec:containers:- name: helloimage: busybox:1.28imagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure
操作:
# 创建
kubectl create -f cron-job-pd.yaml# 查看
kubectl get cronjob
kubectl get cj# 描述
kubectl describe cj cron-job-test
初始化容器
简介:相对于postStart来说,首先InitContainer 能够保证一定在EntryPoint之前执行,而postStart 不能,其次postStart更适合去执行一些命令操作,而initContainer实际就是一个容器,可以在其他基础容器环境下执行更复杂的初始化功能
配置参考 nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploylabels:type: nginx-deploytest: 1.0.0namespace: default
spec:replicas: 1 # 副本数revisionHistoryLimit: 10 # 保留的历史版本数selector: # 选择器matchLabels:app: nginx-deploytest: 1.0.0strategy: # 更新策略type: RollingUpdate # 更新策略类型 RollingUpdate、RecreaterollingUpdate:maxUnavailable: 25% # 更新时最大不可用副本数maxSurge: 25% # 更新时最大超出副本数template: # 模板metadata:labels:app: nginx-deploytest: 1.0.0spec:initContainers:- image: nginx:latestimagePullPolicy: IfNotPresentcommand: ["sh", "-c", "echo 'inited;' >> ~/.init"]name: init-testcontainers:- name: nginximage: nginx:latestimagePullPolicy: IfNotPresentresources:requests:cpu: 100mmemory: 256Milimits:cpu: 200mmemory: 512MiterminationMessagePath: /dev/termination-log # 容器终止时的消息路径terminationMessagePolicy: File # 容器终止时的消息策略dnsPolicy: ClusterFirst # DNS策略restartPolicy: Always # 重启策略schedulerName: default-scheduler # 调度器名称securityContext: {} # 安全上下文terminationGracePeriodSeconds: 30 # pod被删除时的等待时间
测试
# 创建
kubectl create -f nginx-deploy.yaml# 查看po
kubectl get po -o wide# 结果
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deploy-5bcc8cd95b-bb7fn 1/1 Running 0 85s 10.244.107.210 k8s-node3 <none> <none>
nginx-deploy-5bcc8cd95b-fq5gs 1/1 Running 0 75s 10.244.169.177 k8s-node2 <none> <none>
nginx-pod 0/1 Terminating 0 46h <none> k8s-node3 <none> <none>
pvc-test-pd 1/1 Running 0 3h30m 10.244.122.110 k8s-node4 <none> <none># 查看日志
kubectl exec -it nginx-deploy-5bcc8cd95b-bb7fn -- sh
# 结果
Defaulted container "nginx" out of: nginx, init-test (init)
污点和容忍度
简介:
容忍:是标在pod上的,当pod被调度时,如果没有配置容忍,则该pod不会被调度到有污点的节点上,只有该pod上标注了满足某个节点的所有污点,则会被调度到这些节点
tolerations:- key: "污点的key"value: "污点的value"offset:"NoSchedule" # 污点产生的影响operator:"Equal" # 表示value与污点的value要相等,也可以设置为Exists 表示存在key即可,此时可以不用设置 value
nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploylabels:type: nginx-deploytest: 1.0.0namespace: default
spec:replicas: 1 # 副本数revisionHistoryLimit: 10 # 保留的历史版本数selector: # 选择器matchLabels:app: nginx-deploytest: 1.0.0strategy: # 更新策略type: RollingUpdate # 更新策略类型 RollingUpdate、RecreaterollingUpdate:maxUnavailable: 25% # 更新时最大不可用副本数maxSurge: 25% # 更新时最大超出副本数template: # 模板metadata:labels:app: nginx-deploytest: 1.0.0spec:tolerations:- key: "memory"operator: "Equal"value: "low"effect: "NoSchedule"# initContainers:# - image: nginx:latest# imagePullPolicy: IfNotPresent# command: ["sh", "-c", "echo 'inited;' >> ~/.init"]# name: init-testcontainers:- name: nginximage: nginx:latestimagePullPolicy: IfNotPresentresources:requests:cpu: 100mmemory: 256Milimits:cpu: 200mmemory: 512MiterminationMessagePath: /dev/termination-log # 容器终止时的消息路径terminationMessagePolicy: File # 容器终止时的消息策略dnsPolicy: ClusterFirst # DNS策略restartPolicy: Always # 重启策略schedulerName: default-scheduler # 调度器名称securityContext: {} # 安全上下文terminationGracePeriodSeconds: 30 # pod被删除时的等待时间
测试
# 创建
kubectl create -f nginx-deploy.yaml# 查看po
kubectl get po -o wide# 结果
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deploy-5997fbff9d-h7m8f 1/1 Running 0 9s 10.244.107.212 k8s-node3 <none> <none>
nginx-deploy-5997fbff9d-lbgmn 1/1 Running 0 12s 10.244.122.111 k8s-node4 <none> <none>
nginx-pod 0/1 Terminating 0 47h <none> k8s-node3 <none> <none># 编辑 查看 nginx-deploy
kubectl edit deploy nginx-deploy
核心代码
tolerations:
- effect: NoSchedulekey: memoryoperator: Equalvalue: low# 将node4中的 NoSchedule 移除
kubectl taint no k8s-node4 memory=flow:NoSchedule-
kubectl taint no k8s-node4 memory=flow:NoExecute# 在查看po
kubectl get po -o wide
# 结果
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deploy-5997fbff9d-h7m8f 1/1 Running 0 13m 10.244.107.212 k8s-node3 <none> <none>
nginx-deploy-5997fbff9d-q8z92 1/1 Running 0 11s 10.244.169.178 k8s-node2 <none> <none>
nginx-pod 0/1 Terminating 0 47h <none> k8s-node3 <none> <none># 由之前部署在k8s-node4跑到了 k8s-node2# 查看node4
kubectl describe no k8s-node4#核心内容
...
Taints: memory=flow:NoExecute
...
污点Taint
NoSchedule 不能容忍的pod不能被调度到该节点,但是已经存在的节点不会被驱逐
NoExecute 不能容忍的节点会被立即清除,能容忍且没有配置tolerationSeconds属性的可以一直运行,设置了的 则还会在该node运行对应的时间
有点懵。。。。
污点
亲和力
简介:
相关文章:
k8s笔记 | 高度调度
CronJob计划任务 简介:在k8s中周期性运行计划任务,与linux中的crontab相同;注意点 CornJob执行的时间是controller-manager的时间,所以一定要确保controller-manager的时间是准确的,另外cornjob cron表达式 文章参…...
Rom应用开发遇到得一些小bug
记录一些细碎得bug ROM时间类问题 问题描述: 设备拔电重启,ROM时间为默认时间如1970年1月1日,与某些业务场景互斥 问题原因: 后台接口校验https证书校验失败,要求是2年内得请求头校验了时间戳,时间戳过期…...

Python简介
Python简介 1. Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言: 开发过程中没有了编译这个环…...

C++完成特色旅游管理信息系统
背景: 继C完成淄博烧烤节管理系统后,我们来到了特色旅游管理信息系统的代码编写,历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述: 为了更好的管理各个服务小组,开发相应的管…...

贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!
贵州大学计算机科学与技术学院坐落在贵州大学北校区(贵阳花溪)。 学院现有教职工139人,其中专职教师126人,教授17人,副教授37人,讲师46人,高级实验师4人,实验师17人。具有博士学位的…...
分区4K对齐那些事,你想知道的都在这里
在对磁盘进行分区时,有一个很重要的注意事项,就是要将分区对齐,不对齐可能会造成磁盘性能的下降。尤其是固态硬盘SSD,基本上都要求4K对齐。磁盘读写速度慢还找不到原因?可能就是4K对齐的锅。那么分区对齐究竟是怎么回事?为什么要对齐?如何才能对齐?如何检测是否对齐呢?…...
达梦数据库学习笔记
架构、特点和基本概念 达梦数据库(DM Database)是中国达梦数据库有限公司自主研发的关系型数据库管理系统。它广泛应用于政府、金融、电信、能源等行业,具备高性能、高可靠性和高安全性的特点。 架构 达梦数据库的架构设计注重高性能和高可…...

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)
大家都知道,安卓每次更新都会给权限划分的更细、收的更紧。 早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录,没有之前安卓11授权的图了,反正都长一个样,就直接贴新图了。 后面到了安卓12~13的…...
【知识蒸馏】多任务模型 logit-based 知识蒸馏实战
一、什么是逻辑(logit)知识蒸馏 Feature-based蒸馏原理是知识蒸馏中的一种重要方法,其关键在于利用教师模型的隐藏层特征来指导学生模型的学习过程。这种蒸馏方式旨在使学生模型能够学习到教师模型在特征提取和表示方面的能力,从…...
C:技术面试总结
1 变量的声明和定义: 定义:为变量分配地址和存储空间 声明:不分配地址。一个变量可以在多个地方声明,但只能在一个地方定义。extern修饰的变量声明,说明此变量将在文件以外或文件后面部分定义。 2 局部变量是否能与全局变量重名: 可以,局部变量会屏蔽全局变量 局部…...

OpenHarmony 实战开发——一文总结ACE代码框架
一、前言 ACE_Engine框架是OpenAtom OpenHarmony(简称“OpenHarmony”)的UI开发框架,为开发者提供在进行应用UI开发时所必需的各种组件,以及定义这些组件的属性、样式、事件及方法,通过这些组件可以方便进行OpenHarmo…...

【数据结构与算法】之堆的应用——堆排序及Top_K问题!
目录 1、堆排序 2、Top_K问题 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、堆排序 对一个无序的数组…...

啊哈!算法-第2章-栈、队列、链表
啊哈!算法-第2章-栈、队列、链表 第1节 解密qq号——队列第2节 解密回文——栈第3节 纸牌游戏——小猫钓鱼第4节 链表第5节 模拟链表 第1节 解密qq号——队列 新学期开始了,小哈是小哼的新同桌(小哈是个大帅哥哦~),小哼向小哈询问 QQ 号, 小…...
简述 v-if 和 v-show 的区别
v-if 和 v-show 都是 Vue.js 中用于控制元素显示与隐藏的指令,但它们的工作方式有显著的差异。以下是它们之间的主要区别: 渲染方式: v-if:v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和…...

Linux驱动学习之模块化,参数传递,符号导出
1.模块化 1.1.模块化的基本概念: 模块化是指将特定的功能或组件独立出来,以便于开发、测试和维护。在Linux设备驱动中,模块化允许将驱动程序作为内核模块动态加载到系统中,从而提高了系统的灵活性和可扩展性。 1.2.Linux内核模…...
RabbitMQ02-RebbitMQ简介及交换器
一. AMQP协议 什么是AMQP协议 AMQP(Advanced Message Queuing Protocol,高级消息队列协议):它是进程之间传递异步消息的网络协议 AMQP工作过程 发布者通过发布消息,通过交换机,交换机根据路由规则将收到的消息分发交换机绑定的下消息队列,最…...
Matlab自学笔记三十:元胞数组的修改、添加、删除和连接
1.说明 元胞数组的子数组或元素也是元胞型的,其元素内容(值)是本身类型,因此,在添、删、改和连接处理时,必须明确每个元素的值的类型和大小,否则,编程报错是不可避免的了。看本文前…...
【LeetCode】数组——双指针法
1 双指针法 1.1 介绍 双指针法是一种常用的算法技巧,通常用于处理数组或链表中的问题。它使用两个指针,通常一个从数组的开始位置遍历,另一个从数组的末尾位置开始遍历,根据问题的不同,这两个指针可以同时移动&#…...
react 低代码平台方案汇总
React作为当前最流行的前端框架之一,其生态系统中孕育了多种低代码平台方案,旨在加速应用开发过程。以下是几款基于React的低代码平台或工具,它们通过可视化构建、预制组件、数据绑定等功能,帮助开发者快速构建应用程序࿱…...
oss对象上传文件设置格式
PostMapping("upload")ApiOperation(value "上传文件")public Result<UploadDTO> upload(RequestParam("file") MultipartFile file) throws Exception {if (file.isEmpty()) {return new Result<UploadDTO>().error(ModuleErrorCo…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...