当前位置:网站首页>【Kubernetes】Kubernetes 原理剖析与实战应用(更新中)
【Kubernetes】Kubernetes 原理剖析与实战应用(更新中)
2022-06-26 18:20:00 【curd_boy】
Kubernete 怎样控制业务的资源水位?

VPA

资源优化:Kubernete 中GC(垃圾回收)


K8S的调度优先级与抢占机制
官方文档 https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
正常情况下
当一个Pod调度失败后,它就会被暂时“搁置”起来,直到Pod被更新,或者集群状态发生变化,调度器才会对这个Pod进行重新调度
优先级和抢占机制,解决的是Pod调度失败时该怎么办的问题
在调度过程中,会有各种预选和优选算法,在经过了那么多道门槛之后,一个POD才能完成调度,提供服务,在调度过程中,假设有一个很重要的系统服务调度失败了,导致了故障,为了避免这种情况,我们可以对该应用设置一个相对较高的优先级,在调度失败后,将一些优先级相对较低的不是那么重要的应用”挤走“,这就是K8S调度的优先级和抢占的作用。
特殊要求的场景:
当一个高优先级的Pod调度失败后,该Pod并不会被“搁置”,而是会“挤走”某个Node上的一些低优先级的Pod.这样就保证这个高优先级Pod的调度成功
PriorityClass参数限制
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority-nonpreempting
value: 1000000
preemptionPolicy: Never
globalDefault: false
description: "This priority class will not cause other pods to be preempted."
Kubernetes规定优先级是一个32bit的整数,最大值不超过1000000000(10 亿,1 billion),并且值越大代表优先级越高.而超出10亿的值,其实是被Kubernetes保留下来分配给系统 Pod 使用的.这样做的目的,就是保证系统Pod不会被用户抢占掉。

tips:
K8S在发生调度失败后,会基于优先级进行抢占,抢占并不是简单的将Node上的低优先级的pod”挤走“,抢占的设计还是相对比较有意思的。
https://blog.51cto.com/u_2010293/2781899
Kubernete中定时任务
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/
CronJob Spec
.spec.schedule:调度,必需字段,指定任务运行周期,格式同 Cron
.spec.jobTemplate:Job 模板,必需字段,指定需要运行的任务,格式同 Job
.spec.startingDeadlineSeconds :启动 Job 的期限(秒级别),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的 Job 将被认为是失败的。如果没有指定,则没有期限
.spec.concurrencyPolicy:并发策略,该字段也是可选的。它指定了如何处理被 Cron Job 创建的 Job 的并发执行。只允许指定下面策略中的一种:
- Allow(默认):允许并发运行 Job
- Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
- Replace:取消当前正在运行的 Job,用一个新的来替换
注意,当前策略只能应用于同一个 Cron Job 创建的 Job。如果存在多个 Cron Job,它们创建的 Job 之间总是允许并发运行。
.spec.suspend :挂起,该字段也是可选的。如果设置为 true,后续所有执行都会被挂起。它对已经开始执行的 Job 不起作用。默认值为 false。
.spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit :历史限制,是可选的字段。它们指定了可以保留多少完成和失败的 Job。
默认情况下,它们分别设置为 3 和 1。设置限制的值为 0,相关类型的 Job 完成后将不会被保留。
边栏推荐
- PC end records 515 ground sweeping robot /scan data
- Do you know how to compare two objects
- sql 中的alter操作总结
- 交叉编译环境出现.so链接文件找不到问题
- 链游开发成品源码 链游系统开发详情说明
- Decompilation of zero time technology smart contract security series articles
- LeetCode 面试题29 顺时针打印矩阵
- JVM入個門(1)
- 判断某个序列是否为栈的弹出序列
- Example of using QPushButton style (and method of adding drop-down menu to button SetMenu)
猜你喜欢

Vscode 基础必备 常用插件

JVM entry door (1)

Detailed explanation of MySQL mvcc mechanism

(必须掌握的多线程知识点)认识线程,创建线程,使用Thread的常见方法及属性,以及线程的状态和状态转移的意义

Get and set settings in 26class

Do you know how to compare two objects

Connected to surface test questions

交叉编译环境出现.so链接文件找不到问题

Leetcode 238 product of arrays other than itself

Lm06 the mystery of constructing the bottom and top trading strategy only by trading volume
随机推荐
Decision tree and random forest
Map and filter methods for processing scarce arrays
比较两个对象的大小关系原来可以如此花里胡哨
微信小程序 自定义 弹框组件
MYSQL的下载与配置 mysql远程操控
手机影像内卷几时休?
Lm06 the mystery of constructing the bottom and top trading strategy only by trading volume
MySQL download and configuration MySQL remote control
带你解决哈希冲突,并实现一个简单hash表,
gdb安装
JS common regular expressions
Several delete operations in SQL
Numpy's Matplotlib
sql 中的alter操作总结
The eigen library calculates the angle between two vectors
vuex中利用缓存解决刷新state数据丢失问题
Summary of alter operation in SQL
成功解决之微服务@Value获取配置文件乱码问题
How to open a stock account? Is it safe to open an account online now?
Clion编译catkin_ws(ROS工作空间包的简称)加载CMakeLists.txt出现的问题