当前位置: 首页 > news >正文

kubernetes笔记(四)

一、Pod调度策略

1.基于节点的调度

spec->nodeName

[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttp
spec:nodeName: node-0001     # 基于节点名称进行调度containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods -o wide

2.标签管理

1)查询标签

--show-labels

[root@master ~]# kubectl get pods --show-labels [root@master ~]# kubectl get namespaces --show-labels [root@master ~]# kubectl get nodes --show-labels 

2)使用标签过滤

在查询命令后面加: -l 标签名称

# 使用标签过滤资源对象
[root@master ~]# kubectl get nodes -l kubernetes.io/hostname=master

3)添加标签

kubectl label ~~~

[root@master ~]# kubectl label pod myhttp app=apache[root@master ~]# kubectl get pods --show-labels 

4)删除标签

kubectl label ~~~ 标签名称-

[root@master ~]# kubectl label pod myhttp app-[root@master ~]# kubectl get pods --show-labels 

5)资源文件标签

metadata->lebels->键值对

[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:               # 声明标签app: apache         # 标签键值对
spec:containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl delete pods myhttp[root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods --show-labels 

3.基于标签的调度

[root@master ~]# kubectl get nodes node-0002 --show-labels [root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:app: apache
spec:nodeSelector:                        # 基于节点标签进行调度kubernetes.io/hostname: node-0002  # 标签containers:- name: apacheimage: myos:httpd[root@master ~]# kubectl delete pods myhttp [root@master ~]# kubectl apply -f myhttp.yaml  [root@master ~]# kubectl get pods -l app=apache -o wide

4.容器调度

[root@master ~]# kubectl label nodes node-0002 node-0003 disktype=ssd[root@master ~]# vim myhttp.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: myhttplabels:app: apache
spec:nodeSelector:disktype: ssdcontainers:- name: apacheimage: myos:httpd[root@master ~]# sed "s,myhttp,web1," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web2," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web3," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web4," myhttp.yaml |kubectl apply -f -
[root@master ~]# sed "s,myhttp,web5," myhttp.yaml |kubectl apply -f -[root@master ~]# kubectl get pods -o wide

1)清理实验配置(根据标签删除容器,再删除标签)

[root@master ~]# kubectl delete pod -l app=apache[root@master ~]# kubectl label nodes node-0002 node-0003 disktype-

二、Pod资源配额

1.资源对象文件

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]

2.内存资源配额

spec->containers->resources->requests->memory

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:                        # 配置 Pod 调度节点kubernetes.io/hostname: node-0003  # 在 node-0003 节点创建containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:               # 资源策略requests:              # 配额策略memory: 1100Mi       # 内存配额# 验证配额策略
[root@master ~]# for i in app{1..5};do sed "s,minpod,${i}," minpod.yaml;done |kubectl apply -f -# 清理实验配置
[root@master ~]# kubectl delete pod --all

3.计算资源配额

spec->containers->resources->requests->cpu

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:kubernetes.io/hostname: node-0003containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 800m          # 计算资源配额# 验证配额策略
[root@master ~]# for i in app{1..5};do sed "s,minpod,${i}," minpod.yaml;done |kubectl apply -f -[root@master ~]# kubectl get pods# 清理实验配置
[root@master ~]# kubectl delete pod --all

4.综合资源配额

spec->containers->resources->requests->xxx

[root@master ~]# vim minpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: minpod
spec:terminationGracePeriodSeconds: 0nodeSelector:kubernetes.io/hostname: node-0003containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 800m          # 计算资源配额memory: 1100Mi     # 内存资源配额

三、Pod资源限额

1.限额内存CPU

spec->containers->resources->limits->cpu/memory等

# 创建限额资源对象文件
[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:limits:cpu: 800mmemory: 2000Mi[root@master ~]# kubectl apply -f maxpod.yaml 

2.验证内存限额

[root@master ~]# kubectl cp memtest.py maxpod:/usr/bin/
[root@master ~]# kubectl exec -it maxpod -- /bin/bash
[root@maxpod /]# memtest.py 2500[root@maxpod /]# memtest.py 1500

3.验证CPU限额

[root@master ~]# kubectl exec -it maxpod -- ps aux[root@master ~]# kubectl top pods# 清理实验 Pod
[root@master ~]# kubectl delete pod maxpod

四、全局资源管理

1.LimitRange

1)默认配额策略

spec->limits->default

spec->limits->defaultRequest

# 创建名称空间
[root@master ~]# kubectl create namespace work
namespace/work created
# 设置默认配额
[root@master ~]# vim limit.yaml
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimit namespace: work   
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi [root@master ~]# kubectl -n work apply -f limit.yaml

验证配额策略

[root@master ~]# vim maxpod.yaml
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"][root@master ~]# kubectl -n work apply -f maxpod.yaml[root@master ~]# kubectl -n work describe pod maxpod
... ...Limits:cpu:     300mmemory:  500MiRequests:cpu:     10mmemory:  8Mi
... ...[root@master ~]# kubectl -n work top pods

2)自定义资源

spec->containers->resources->requests->xx

spec->containers->resources->limits->xx

[root@master ~]# vim maxpod.yaml
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 1100mmemory: 2000Mi[root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml[root@master ~]# kubectl -n work describe pod maxpod
... ...Limits:cpu:     1100mmemory:  2000MiRequests:cpu:     10mmemory:  10Mi
... ...
[root@master ~]# kubectl -n work top pods maxpod

3)资源配额范围

spec->limits->max->cpu/memory等

spec->limits->min->cpu/memory等

[root@master ~]# vim limit.yaml 
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimitnamespace: work
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi max:cpu: 800mmemory: 1000Mimin:cpu: 2mmemory: 8Mi[root@master ~]# kubectl -n work apply -f limit.yaml [root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml 

4)多容器资源配额

spec->containers->resources->requests->xxx

spec->containers->resources->limits->xxx

[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi- name: linux1image: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi[root@master ~]# kubectl -n work apply -f maxpod.yaml [root@master ~]# kubectl -n work get pods[root@master ~]# kubectl -n work top pods maxpod

5)Pod资源配额

[root@master ~]# vim limit.yaml 
---
apiVersion: v1
kind: LimitRange
metadata:name: mylimitnamespace: work
spec:limits:               - type: Container     default:            cpu: 300m memory: 500Mi     defaultRequest:cpu: 8m  memory: 8Mi max:cpu: 800mmemory: 1000Mimin:cpu: 2mmemory: 8Mi- type: Podmax:cpu: 1200mmemory: 1200Mimin:cpu: 2mmemory: 8Mi[root@master ~]# kubectl -n work apply -f limit.yaml[root@master ~]# kubectl -n work delete -f maxpod.yaml [root@master ~]# kubectl -n work apply -f maxpod.yaml 

多个Pod消耗资源

[root@master ~]# vim maxpod.yaml 
---
kind: Pod
apiVersion: v1
metadata:name: maxpod
spec:terminationGracePeriodSeconds: 0containers:- name: linuximage: myos:8.5command: ["awk", "BEGIN{while(1){}}"]resources:requests:cpu: 10mmemory: 10Milimits:cpu: 800mmemory: 1000Mi# 创建太多Pod,资源也会耗尽
[root@master ~]# for i in app{1..9};do sed "s,maxpod,${i}," maxpod.yaml ;done |kubectl -n work apply -f -# Pod 创建成功后,查看节点资源使用情况
[root@master ~]# kubectl top nodes# 清理实验配置
[root@master ~]# kubectl -n work delete pods --all

2.ResourceQuota

1)全局配额策略

spec->hard->requests.cpu

spec->hard->requests.memory

spec->hard->limits.cpu

spec->hard->limits.memory

spec->hard->pod->数值

[root@master ~]# vim quota.yaml
---
apiVersion: v1
kind: ResourceQuota
metadata:name: myquotanamespace: work
spec:hard:requests.cpu: 1000mrequests.memory: 2000Milimits.cpu: 5000mlimits.memory: 8Gipods: 3[root@master ~]# kubectl -n work apply -f quota.yaml 

验证quota配额

[root@master ~]# for i in app{1..5};do sed "s,maxpod,${i}," maxpod.yaml ;done |kubectl -n work apply -f -# 删除实验 Pod 与限额规则
[root@master ~]# kubectl -n work delete pods --all[root@master ~]# kubectl -n work delete -f limit.yaml -f quota.yaml[root@master ~]# kubectl delete namespace work

相关文章:

kubernetes笔记(四)

一、Pod调度策略 1.基于节点的调度 spec->nodeName [rootmaster ~]# vim myhttp.yaml --- kind: Pod apiVersion: v1 metadata:name: myhttp spec:nodeName: node-0001 # 基于节点名称进行调度containers:- name: apacheimage: myos:httpd[rootmaster ~]# kubectl a…...

通信工程学习:什么是SNMP简单网络管理协议

SNMP:简单网络管理协议 SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于在计算机网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。它属于OSI模型的应用层&#…...

ubuntu20.04系统下,c++图形库Matplot++配置

linux下安装c图形库Matplot,使得c可以可视化编程;安装Matplot之前,需要先安装一个gnuplot,因为Matplot是依赖于此库 gnuplot下载链接: http://www.gnuplot.info/ 一、gnuplot下载与安装(可以跳过,下面源码…...

[激光原理与应用-126]:南京科耐激光-激光焊接 - 焊中无损检测技术 - 智能制程监测系统IPM介绍 - 26- 频域分析法

目录 一、什么是频域分析法 1、定义 2、基本原理 3、分析步骤 4、应用领域 5、优缺点 二、频域分析法在激光焊接故障监测中的应用 2.1 概述 1、应用背景 2、频域分析法的应用 3、应用优势 4、应用实例 2.2 激光焊接故障检测中光电信号的频谱特征 1、光电信号分类…...

深入理解 Solidity 修饰符(Modifier):功能、应用与最佳实践

1. 什么是修饰符(Modifier)? 1.1 修饰符的定义 在 Solidity 中,修饰符(Modifier)是一种用于更改函数行为的关键字。它们可以用于控制函数的执行条件、添加前置检查、简化重复逻辑等。修饰符在函数执行之前…...

YOLO11项目实战1:道路缺陷检测系统设计【Python源码+数据集+运行演示】

一、项目背景 随着城市化进程的加速和交通网络的不断扩展,道路维护成为城市管理中的一个重要环节。道路缺陷(如裂缝、坑洞、路面破损等)不仅影响行车安全,还会增加车辆的磨损和维修成本。传统的道路缺陷检测方法主要依赖人工巡检…...

怎么屏蔽统计系统统计到的虚假ip

屏蔽统计系统中的虚假IP是保护网站分析数据准确性的重要措施。以下是一些有效的策略和步骤,可以帮助您过滤掉虚假IP: 1. 识别虚假IP的特征 了解虚假IP的常见特征可以帮助您识别和屏蔽它们: 短时间内高频率访问:虚假IP可能会在短…...

前端开发设计模式——策略模式

目录 一、策略模式的定义和特点 1.定义: 2.特点: 二、策略模式的实现方式 1.定义策略接口: 2.创建具体策略类: 3.定义上下文类: 三、策略模式的应用场景 1.表单验证场景: 2.动画效果切换场景&…...

SysML案例-潜艇

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>...

车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…...

基于深度学习的任务序列中的快速适应

基于深度学习的任务序列中的快速适应是指模型在接连处理不同任务时,能够迅速调整和优化自身以适应新任务的能力。这种能力在动态环境和多任务学习中尤为重要,旨在减少训练时间和资源需求。以下是这一主题的关键要素: 1. 快速适应的背景 动态…...

虚拟机三种网络模式详解

在电脑里开一台虚拟机,是再常见不过的操作了。无论是用虚拟机玩只有旧版本系统能运行的游戏,还是用来学习Linux、跑跑应用程序都是很好的。而这其中,虚拟机网络是绝对绕不过去的。本篇文章通俗易懂的介绍了常见的虚拟网络提供的三种网络链接模…...

[leetcode]674_最长连续递增序列

给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 l < i < r&#xff0c;都有 nums[i] < nums[i 1] &am…...

【无人机设计与技术】四旋翼无人机,UAV仿真,轨迹跟踪PID控制

摘要 本文探讨了四旋翼无人机&#xff08;UAV&#xff09;在轨迹跟踪中的PID控制仿真方法。通过设计三轴方向的PID控制器&#xff0c;调节无人机的姿态与位置&#xff0c;使其能够准确跟踪预设轨迹。本文使用MATLAB/Simulink进行了建模与仿真&#xff0c;验证了PID控制算法在无…...

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测

回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测 文章目录 一、基本原理原理流程总结 二、实验结果三、核心代码四、代码获取五、总结 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提…...

javaScript基础知识汇总

一、基础语法 1、区分大小写&#xff1a;无论是变量、函数名还是操作符&#xff0c;都区分大小写。 2、标识符&#xff1a;就是变量、函数、属性或函数参数的名称。标识符可以由一个或多个字符构成&#xff0c;但需要满足以下条件&#xff1a; 第一个字符必须是一个字母、下…...

《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)

目录 0. 前言 正文&#xff1a;参数管理 1. 参数访问 1.1 [目标参数] 1.2 [一次性访问所有参数] 1.3 [从嵌套块收集参数] 2. 参数初始化 2.1 [内置初始化] 2.2 [自定义初始化] 2.3 [参数绑定-共享参数] 3. 小结&#xff08;第2节&#xff09; 4. 延后初始化 (原书第…...

双端之Nginx+Php结合PostgreSQL搭建Wordpress

第一台虚拟机:安装 Nginx 更新系统包列表: sudo apt update安装 Nginx及php扩展: sudo apt install nginx php-fpm php-pgsql php-mysqli -y启动 Nginx 服务: sudo systemctl start nginx检查 Nginx 是否正常运行: xdg-open http://localhost注意:终端命令打开网址 …...

Another redis desktop manager使用说明

Another redis desktop manager使用说明 概述界面介绍图示说明连接界面设置界面查看操作日志主界面信息进入redis-cli控制台更多 概述 Another Redis Desktop Manager是一个开源的跨平台 Redis 客户端&#xff0c;提供了简洁易用的图形用户界面&#xff08;GUI&#xff09;&am…...

【git】配置 Git 的换行符处理和安全性||安装 Ruby

配置 Git 的换行符处理和安全性&#xff1a; git config --global core.autocrlf input&#xff1a;这个设置确保在提交代码时&#xff0c;Git 会将 CRLF&#xff08;Windows 的换行符&#xff09;转换为 LF&#xff08;Unix 的换行符&#xff09;&#xff0c;但在检出代码时不…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...