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.rhkb.cn/news/191334.html

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

相关文章

Riskified: 2023年电商政策滥用问题恶化,正严重挑战商家盈利底线

2023年11月14日,中国上海 —— 近日,由全球领先的电子商务欺诈和风险智能解决方案提供商 Riskified 发布的《政策滥用及其对商家的影响:2023年全球参考基准》报告显示,政策滥用问题正进一步恶化,超过九成电商商家正在承…

只有开源才能拯救AI

导语 | 随着 AI 技术的蓬勃发展,大模型的开源化正成为人工智能领域的新潮流,但同时引发的伦理和安全风险也饱受大家关注,如何把握平衡其中的尺度成为开源的一大难题。我们又应该如何有效进行开源治理?未来将走向何方?今…

前端工具nvm实现node自由

node的自由之路 前言 大家使用vue框架开发的朋友可能会遇到首次运行公司项目环境的时候,会出现使用npm install命令安装依赖包的时候出现各种各样的问题,其中很重要的一个错误原因就是因为你的nodejs版本和当时搭建环境的版本不一致造成的。今天就来给…

绿盟远程安全评估系统 RSAS 使用体验-难用

最近领导让我用公司采购的RSAS对产品进行漏洞扫描,学习并使用了这个软件,体验就是真的很难用。使用遇到问题时,咨询售后服务,机器人需要有公司认证,不能随便问问题,也是无语了。咨询客服,客服回…

猪酒店房价采集

<?php // 设置代理 $proxy_host jshk.com.cn;// 创建一个cURL资源 $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, $proxy_host.:.$proxy_port);// 连接URL curl_setopt($ch, CURLOPT_URL, "http://www.zujia.com/");// 发送请求并获取HTML文档…

python实现一个简单的桌面倒计时小程序

本章内容主要是利用python制作一个简单的桌面倒计时程序&#xff0c;包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…

asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net学院网上报销系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net学院网上报销系统 应用技术…

Huggingface

1 介绍 Hugging Face 是一个开源模型社区。目前已经共享 300k 模型&#xff0c;100k 应用&#xff0c;50k 数据集&#xff08;截至 231114 数据&#xff09;&#xff0c;可视为 AI 界的 github。 2 官网 https://huggingface.co/ 3 主要功能 3.1 Models 模型 大家都用过就…

Springboot+Dubbo+Nacos 集成 Sentinel(入门)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 官网 1.版本选择 参考 SpringClou…

【QT】飞机大战

0 项目简介 飞机大战是我们大家所熟知的一款小游戏&#xff0c;本教程就是教大家如何制作一款自己的飞机大战 首先我们看一下效果图 玩家控制一架小飞机&#xff0c;然后自动发射子弹&#xff0c;如果子弹打到了飞下来的敌机&#xff0c;则射杀敌机&#xff0c;并且有爆炸的特…

ESP32 Arduino实战基础篇-生成 PWM 信号

在本教程中,我们将向您展示如何使用 Arduino IDE 通过 ESP32 生成 PWM 信号。作为示例,我们将构建一个简单的电路,使用 ESP32 的 LED PWM 控制器对 LED 进行调光。我们还将向您展示如何同时在不同的 GPIO 上获取相同的 PWM 信号。 在继续本教程之前,您应该在 Arduino IDE 中…

nvm工具解决nodejs版本切换问题

常见版本问题 npm启动vite项目报错&#xff0c;信息如下 npm run dev> my-vue-app0.0.0 dev D:\data\code\document-assistant-web > vitefile:///D:/data/code/document-assistant-web/node_modules/vite/bin/vite.js:7await import(source-map-support).then((r) >…

国际阿里云:Windows实例中数据恢复教程!!!

在处理磁盘相关问题时&#xff0c;您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法&#xff0c;同时提供了使用云盘的常见误区以及最佳实践&#xff0c;避免可能的数据丢失风险。 前提条件 已注册阿里云账…

两数之和问题

题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…

Java 简单实现一个 UDP 回显服务器

文章目录 UDP 服务端UDP 客户端实现效果UDP 服务端(实现字典功能)总结 UDP 服务端 package network;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UdpEchoServer {private Da…

监控和数据采集软件架构和详细设计

介绍 监控和数据采集软件通过提供实时监控、数据收集和分析功能&#xff0c;在各个行业中发挥着至关重要的作用。这些软件应用程序可帮助企业收集有价值的见解、优化流程并做出明智的决策。在本文中&#xff0c;我们将探讨监测和数据采集软件的软件架构、编程技术和详细设计规范…

在 Vue3 中使用 mitt 进行组件通信

npm 包地址 mitt 是一个轻量级的 JavaScript 事件触发器&#xff0c; 只有200b。有基本的事件触发、订阅和取消订阅功能&#xff0c;还支持用命名空间来进行更高级的事件处理。 功能特点&#xff1a; Microscopic —— weighs less than 200 bytes gzippedUseful —— a wil…

【Liunx】DHCP服务

【Liunx】DHCP服务 DHCP概述A.安装dhcpB.查看配置文件C.修改配置文件 DHCP概述 DHCP(Dynamic Host Configuration Protocol)i动态主机配置协议 DHCP是由Internet工作任务小组设计开发的&#xff0c;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。 口使用DHCP服务的…

在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch

目录 1 查看本机CUDA版本 2 查看对应CUDA的对应pytorch版本安装 3 用pip 安装 4 用conda安装 5 验证安装 在PyTorch中使用CUDA&#xff0c;根据你的具体环境和需求调整版本号&#xff0c;确保安装的PyTorch版本与你的CUDA版本兼容。 在PyTorch中使用CUDA&#xff0c;你需…