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运行对应的时间

有点懵。。。。

污点

亲和力

简介:

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

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

相关文章

xjoi题库一级三段题解(c语言版)

浮点数 时间&#xff1a;0.2 空间&#xff1a;32M 题目描述&#xff1a; 小鹦鹉正在学习浮点数&#xff0c;你跟他说一个浮点数&#xff0c;他立刻就能学会。 输入一个浮点数&#xff0c;输出这个浮点数。 输入格式&#xff1a; 输入一个浮点数 输出格式&#xff1a; 输出一个…

2024.5.25AcWing刷题记录-排序篇

一、786. 第k个数 - AcWing题库 三路快速排序 import random def func(nums, start, end):if start > end:return idx random.randint(start, end)base nums[idx]i, j, m start, start, end 1while j < m:if nums[j] < base:nums[i], nums[j] nums[j], nums[i]…

Redis机制-Redis缓存穿透,击穿,雪崩理解等问题的理解和学习

目录 一 缓存穿透问题 二 缓存击穿问题 三 缓存雪崩问题&#xff1a; 图1 正常的Redis缓存流程 一 缓存穿透问题 我们都知道Redis是一个存储键值对的非关系型数据库&#xff0c;那么当用户进行查询的时候&#xff0c;势必会从前端发起请求&#xff0c;从而数据从Redis缓存…

内网穿透--Frp-简易型(速成)-上线

免责声明:本文仅做技术交流与学习... 目录 frp项目介绍: 一图通解: ​编辑 1-下载frp 2-服务端(server)开启frp口 3-kali客户端(client)连接frp服务器 4-kali生成马子 5-kali监听 6-马子执行-->成功上线 frp项目介绍: GitHub - fatedier/frp: A fast reverse proxy…

论文精读-SwinIR Image Restoration Using Swin Transformer

论文精读-SwinIR: Image Restoration Using Swin Transformer SwinIR:使用 Swin Transformer进行图像恢复 参数量&#xff1a;SR 11.8M、JPEG压缩伪影 11.5M、去噪 12.0M 优点&#xff1a;1、提出了新的网络结构。它采用分块设计。包括浅层特征提取&#xff1a;cnn提取&#…

Verilog实战学习到RiscV - 1 : Yosys 综合

Yosys 综合 实例 一般 FPGA IDE 的第一步都是RTL 综合&#xff08;Synthesis&#xff09;。之后就能看到数字电路图了。然后可以做RTL 级的仿真模拟。 直接上代码&#xff0c;这里我们看一个简单的加法器来学习。 module adder(input [7:0] a,input [7:0] b, input …

Java延时队列取消未支付的订单 之 重启服务任务丢失

一、定义延迟任务类 package com.activity.domain;import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit;/*** 延迟任务类*/ public class DelayedCancellation implements Delayed {private String order;private final long delayTime; // 延迟时间p…

链表类型的无界阻塞队列-LinkedBlockingQueue

一:LinkedBlockingQueue介绍 1:LinkedBlockingQueue是一个基于链表实现的阻塞队列,默认情况下,该阻塞队列的大小为Integer.MAX_VALUE,由于这个数值特别大,所以 LinkedBlockingQueue 也被称作无界队列,代表它几乎没有界限,队列可以随着元素的添加而动态增长,但是如果没…

智能体之斯坦福AI小镇(Generative Agents: Interactive Simulacra of Human Behavior)

相关代码地址见文末 论文地址&#xff1a;Generative Agents: Interactive Simulacra of Human Behavior | Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology 1.概述 论文提出了一种多个智能体进行协同&#xff0c;进而模拟可信的人…

Python燃气轮机汽车钢棒整流电路控制图统计模型过程潜力分析

&#x1f3af;要点 &#x1f3af;活塞模拟器&#xff1a;&#x1f58a;控制图过程能力分析&#xff1a;Cp 对过程提供在规格上限和下限内的输出的潜力度量&#xff0c;Cpk中心过程能力指数&#xff0c;Cpl估计仅包含规格下限过程能力&#xff0c;Cpu估计仅包含规格上限过程能力…

Linux系统下Mysql忘记密码怎么解决

一、对Mysql配置文件进行设置 1、找到/etc/mysql/my.cnf路径下&#xff0c;用Vi命令编辑my.cnf配置文件&#xff0c;命令如下&#xff1a; # 以管理员身份登录 sudo su # 输入管理员密码 # 登录成功后&#xff0c;找到Mysql的配置文件-->Mysql配置文件默认在此 cd /etc/my…

善用KEGG数据库挖掘目的基因

有关KEGG的分析在很多已发表的论文中都十分常见&#xff0c;涉及到的方向也很广泛&#xff0c;比如&#xff1a;代谢组、表观组、转录组等等。通常得到相关的基因集或者代谢物后&#xff0c;我们都希望能够快速了解它们的蛋白功能和涉及的调控机制&#xff0c;从而进一步锁定接…

NetSuite Intercompany COGS科目设置问题

在22年底的NetSuite多公司功能串讲中&#xff0c;有一个题目是Intercompany COGS科目的设置问题。近期在项目上这个问题被密集讨论。为了方便分享&#xff0c;所以在此摘出来独立成文。有兴趣的同学也可以翻看之前的视频。 NetSuite知识会 第8谈 多公司功能串讲 NetSuite Inter…

图论(从数据结构的三要素出发)

文章目录 逻辑结构物理结构邻接矩阵定义性能分析性质存在的问题 邻接表定义性能分析存在的问题 十字链表(有向图)定义性能分析 邻接多重表(无向图)定义性能分析 数据的操作图的基本操作图的遍历广度优先遍历&#xff08;BFS&#xff09;算法思想和实现性能分析深度优先最小生成…

WORD、PPT技巧

WORD技巧 编辑设置 word标题导航窗口怎么调出word2016&#xff0c;缩小了页面&#xff0c;可是怎么是竖着的一页一页排列啊&#xff1f;以前不是好几页横排着的么&#xff1f;怎么设置&#xff0c;求救&#xff1a;在Word标题栏那一行找到“视图”&#xff0c;点击“显示比例…

20212416 2023-2024-2 《移动平台开发与实践》第5次作业

百度地图应用 1.实验内容2.实验过程2.1 Android Studio配置2.1. 创建一个Android项目2.2 在项目中本地集成BaiduMap SDK 2.2 编写代码2.2.1 配置AndroidManifest.xml文件2.2.2 编写UI界面布局文件2.2.3 编写主函数代码2.2.4 运行结果 3.学习中遇到的问题及解决4.学习感悟与思考…

向量数据库的使用

向量数据库 向量数据库是一种专门用于存储、管理和查询高维向量数据的数据库系统。随着人工智能和机器学习的广泛应用&#xff0c;向量数据库在处理非结构化数据&#xff08;如文本、图像、音频和视频等&#xff09;的任务中变得越来越重要。本文将介绍快速使用Chroma 安装 …

Pyqt5中获取按钮的值

使用Sender()函数 // An highlighted block class MyWindow(QWidget):def __init__(self):super(MyWindow, self).__init__()self.setui()# #def calculate(self):button self.sender()print("button:{}".format(button.text()))def setui(self):data [["7&…

Nginx将https重定向为http进行访问的配置(附Demo)

目录 前言1. Demo2. 彩蛋前言 对应nginx的基本知识推荐阅读: Nginx配置静态网页访问(图文界面)Nginx从入门到精通(全)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)由于网站默认无配置https,但输入网址的时候浏览器默认带https,导致网页一直无法访问…

Spring的依赖注入

Date public class Student{public String name ;public String[] array ;public Grade grade;public List list;public Set set;public Map map;public Properties prop;//使用IOC默认使用无参构造器创建对象&#xff0c;没有无参构造器会报错 // public Student(Strin…