k8s笔记资源限制,亲和和性 污点和容忍

镜像下载失败

当宿主机资源不足时,会把pod kill ,在其他node 重建

在宿主机放可能多的资源

requests(请求) limits(限制) 超出百分比

容器
pod
namespace级别

pod使用资源过多,导致宿主机资源不足,会导致重建pod

cpu 内存限制

#apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:name: limit-test-deploymentnamespace: magedu
spec:replicas: 1selector:matchLabels: #rs or deploymentapp: limit-test-pod
#    matchExpressions:
#      - {key: app, operator: In, values: [ng-deploy-80,ng-rs-81]}template:metadata:labels:app: limit-test-podspec:containers:- name: limit-test-containerimage: lorel/docker-stress-ngresources:limits:cpu: "2"memory: "512Mi"requests:memory: "512M"cpu: "2"#command: ["stress"]args: ["--vm", "3", "--vm-bytes", "256M"]#nodeSelector:#  env: group1

资源限制

apiVersion: v1
kind: LimitRange
metadata:name: limitrange-magedunamespace: magedu   #限制那个命名空间
spec:limits:- type: Container       #限制的资源类型max:cpu: "2"            #限制单个容器的最大CPUmemory: "2Gi"       #限制单个容器的最大内存min:cpu: "500m"         #限制单个容器的最小CPUmemory: "512Mi"     #限制单个容器的最小内存default:cpu: "500m"         #默认单个容器的CPU限制memory: "512Mi"     #默认单个容器的内存限制defaultRequest:cpu: "500m"         #默认单个容器的CPU创建请求memory: "512Mi"     #默认单个容器的内存创建请求maxLimitRequestRatio:cpu: 2              #限制CPU limit/request比值最大为2  memory: 2         #限制内存limit/request比值最大为1.5- type: Podmax:cpu: "4"            #限制单个Pod的最大CPUmemory: "4Gi"       #限制单个Pod最大内存- type: PersistentVolumeClaim   #限制pvcmax:storage: 50Gi        #限制PVC最大的requests.storagemin:storage: 30Gi        #限制PVC最小的requests.storage

在这里插入图片描述

cpu limit/request 限制

限制超出
运行yaml成功但是不会创建pod

但是有deployment

查看kubectl get deployment -n magedu -oyaml

命名空间级别的限制

亲和性和反亲和性

pod调度流程

通过命令行或者dashboard,创建pod或者调用k8s api,请求发送到apiserver,apiserver 把pod 放到etcd里,scheduler 从etcd获取事件,执行调度,调度成功后,把结果返回给apiserver, 给pod 选择一个node,把调度结果返回给apiserver,这个过程叫创建绑定(pod 分配给那个node?),apiserver 把这个事件写入etcd, scheduler获取绑定事件,kubelet调用运行时( ),创建容器并运行,拉取镜像kubelet执行初始化, rootfs 调度时会过滤不符合的节点,对节点打分,选择最合适的节点,评分一致,scheduler会随机选择一个。

调度到

node
sshd 大内存 , gpu服务器

nodeSelector简介

可用于基于服务类型干预Pod调度结果,如对磁盘I/O要求高的pod调度到SSD节点,对内存要求比较高的
pod调度的内存较高的节点

对服务器打标签,调度到指定标签

root@k8s-master02:~# kubectl label node 192.168.1.27 project=magedu
yaml

nodeSelector:
project: magedu
disktype: ssd

nodeName案例

指定pod调度到那个目的主机
数据库就运行到指定节点
在这里插入图片描述

node affinity:

Selector
 requiredDuringSchedulingIgnoredDuringExecution #必须满足pod调度匹配条件,如果不满足则不进行调度
 preferredDuringSchedulingIgnoredDuringExecution #倾向满足pod调度匹配条件,不满足的情况下会调度的不符合条件的Node上
 IgnoreDuringExecution表示如果在Pod运行期间Node的标签发生变化,导致亲和性策略不能满足,也会继续运行当前的Pod。
 Affinity与anti-affinity的目的也是控制pod的调度结果,但是相对于nodeSelector,Affinity(亲和)与anti-affinity(反亲和)的功能更加强大:
affinity与nodeSelector对比:
1、亲和与反亲和对目的标签的选择匹配不仅仅支持and,还支持In、NotIn、Exists、DoesNotExist、Gt、Lt。
 In:标签的值存在匹配列表中(匹配成功就调度到目的node,实现node亲和)
 NotIn:标签的值不存在指定的匹配列表中(不会调度到目的node,实现反亲和)
 Gt:标签的值大于某个值(字符串)
 Lt:标签的值小于某个值(字符串)
 Exists:指定的标签存在
2、可以设置软匹配和硬匹配,在软匹配下,如果调度器无法匹配节点,仍然将pod调度到其它不符合条件的节点。
3、还可以对pod定义亲和策略,比如允许哪些pod可以或者不可以被调度至同一台node。

硬亲和 :必须调度到那个节点,不匹配就失败
软亲和:

      affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions: #匹配条件1,同一个key的多个value只有有一个匹配成功就认为当前key匹配成功 - key: disktypeoperator: Invalues:- ssd- hddx- key: project #匹配条件2,当前key也要匹配成功一个value,即条件1和条件2必须同时每个key匹配成功一个value,否则不调度operator: Invalues:- magedu

pod 亲和和反亲和

Pod亲和性与反亲和性可以基于已经在node节点上运行的Pod的标签来约束新创建的Pod可以调度到的
目的节点,注意不是基于node上的标签而是使用的已经运行在node上的pod标签匹配。
其规则的格式为如果 node节点 A已经运行了一个或多个满足调度新创建的Pod B的规则,那么新的
Pod B在亲和的条件下会调度到A节点之上,而在反亲和性的情况下则不会调度到A节点至上。
其中规则表示一个具有可选的关联命名空间列表的LabelSelector,只所以Pod亲和与反亲和需可以通
过LabelSelector选择namespace,是因为Pod是命名空间限定的而node不属于任何nemespace所以
node的亲和与反亲和不需要namespace,因此作用于Pod标签的标签选择算符必须指定选择算符应用
在哪个命名空间。
从概念上讲,node节点是一个拓扑域(具有拓扑结构的域),比如k8s集群中的单台node节点、一个机架、
云供应商可用区、云供应商地理区域等,可以使用topologyKey来定义亲和或者反亲和的颗粒度是
node级别还是可用区级别,以便kubernetes调度系统用来识别并选择正确的目的拓扑域。

pod 与pod是否调度到同一个node节点
pod硬亲和: pod和pod必须在同一个node,必须匹配成功

pod硬反亲和: pod必须不在同一个node
pod软反亲和:pod 能不在同一个node就不在一个node

污点和容忍:

master 只负责集群管理,不负责容器运行

污点(taints),用于node节点排斥 Pod调度,与亲和的作用是完全相反的,即taint的node和pod是排斥调度关系。
容忍(toleration),用于Pod容忍node节点的污点信息,即node有污点信息也会将新的pod调度到node

kubectl uncordon 192.168.1.24 #取消污点

污点的三种类型:
 NoSchedule: 表示k8s将不会将Pod调度到具有该污点的Node上
 # kubectl taint nodes 172.31.7.111 key1=value1:NoSchedule #设置污点
 node/172.31.7.111 tainted
 # kubectl describe node 172.31.7.111 #查看污点
 Taints: key1=value1:NoSchedule
 # kubectl taint node 172.31.7.111 key1:NoSchedule- #取消污点
 node/172.31.7.111 untainted
 PreferNoSchedule: 表示k8s将尽量避免将Pod调度到具有该污点的Node上
 NoExecute: 表示k8s将不会将Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod强制驱逐出去
 # kubectl taint nodes 172.31.7.111 key1=value1:NoExecute #key 和value 可以自定义

kubectl cordon: 不会调度新的pod,不会驱逐
NoExecute :不会调度新的pod,会驱逐

驱逐(eviction,节点驱逐),用于当node节点资源不足的时候自动将pod进行强制驱逐,以保证当前node节点的正常运行。
Kubernetes基于是QoS(服务质量等级)驱逐Pod , Qos等级包括目前包括以下三个:

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

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

相关文章

【Proteus仿真】【Arduino单片机】DS18B20温度计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、DS18B20温度传感器等。 主要功能: 系统运行后,LCD1602显示传感器采集温度。 二、软件设计 /*…

WorkPlus AI助理知识问答机器人,助力企业级私有化AI构建

ChatGPT以及其他大语言模型展现了令人惊叹的广博知识、语义理解能力与创造能力。它们能够在会话中承认自身错误并进行改正,还能进行一定程度的逻辑推理,具备多语种翻译与多语言编程等"超能力",可胜任多种自然语言处理任务。 然而&…

【C语言数据结构————————二叉树】

文章目录 文章目录 一、什么是树 树的定义 树的种类 树的深度 树的基本术语 二、满二叉树 定义 满二叉树的特点 三、完全二叉树 定义 特点 四、二叉树的性质 五、二叉树的存储结构 顺序存储结构 链式存储结构 六、二叉树的基本操作 七、二叉树的创建 八、二叉树…

2016Outlook显示正在启动无法进入Outlook

2016Outlook显示正在启动无法进入Outlook 故障现象: 因上次非正常关闭,导致Outlook启动时,一直处于启动界面,无法进入主界面正常工作 故障截图: 故障原因: 数据文件异常导致 解决方案: 1、关…

【FPGA】正确处理设计优先级--或许能帮你节省50%的资源

概述 假如现在有一种方法–可以在不怎么需要修改已有设计的情况下,就可以帮您节省50%的设计资源,那你会试试看吗? 当前市场环境下,更低廉的成本却可获得同等性能无疑是极具诱惑的。本文将介绍一种FPGA设计技术,该技术…

数据结构—二叉树的模拟实现(c语言)

目录 一.前言 二.模拟实现链式结构的二叉树 2.1二叉树的底层结构 2.2通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 2.3二叉树的销毁 2.4二叉树查找值为x的节点 2.5二叉树节点个数 2.6二叉树叶子节点个数 2.7二叉树第k层节点个数 三.二叉树的遍历 3.1…

可怕!.Net 8正式发布了,.Net野心确实不小!

随着三天.NET Conf 2023的会议结束了,.Net 8正式发布了。 .Net 8是官方号称有史以来性能最快的一个版本了。 .Net 8 增加了数以千计的性能、稳定性和安全性改进,以及平台和工具增强功能,有助于提高开发人员的工作效率和创新速度。 反正就是…

无需数据库服务器部署脚本,全能型开源数据库监控平台lepus

Lepus 是一款开源的数据库监控平台,目前已经支持 MySQL、Oracle、SQLserver、MongoDB、Redis 等数据库的基本监控和告警。 Lepus 在监控数据库时,无需在每台数据库服务器上部署脚本或 Agent,只需要在数据库中创建授权账号后,即可…

2023.11.14 关于 Spring Boot 创建和使用

目录 Spring Boot Spring Boot 项目的创建 网页版创建 Spring Boot 项目 Spring Boot 目录说明 项目运行 Spring Boot Spring Boot 是基于 Spring 设计的一个全新的框架,其目的是用来简化 Spring 的应用、初始搭建、开发的整个过程Spring Boot 就是一个整合了…

CPD:使用restAPI和cpd-cli命令创建DMC实例

环境 Red Hat Enterprise Linux release 8.6 (Ootpa)OCP 4.12.22IBM CP4D 4.8.0Data Management Console 3.1.12 (DMC for CPD 4.8.0) 注:使用了fyre VM。 创建DMC实例 准备 首先export环境变量: . ./stg_env.sh把 cpd-cli 放到PATH里。编辑 ~/.ba…

Blackmagic Design DaVinci Resolve Studio18(达芬奇调色剪辑)mac/win中文版

在影视制作领域,调色和剪辑是至关重要的环节,它们直接决定了作品的观感和质量。而Blackmagic Design DaVinci Resolve Studio18(达芬奇调色剪辑)作为业界领先的专业调色剪辑软件,以其出色的性能和强大的功能&#xff0…

一文图解爬虫_姊妹篇(spider)

—引导语 爬虫,没有一个时代比当前更重视它。一个好的爬虫似乎可以洞穿整个互联网,“来装满自己的胃”。 接上一篇:一文图解爬虫(spider) 博主已初步对爬虫的“五脏六腑”进行了解剖。虽然俗称“爬虫”,但窃…