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_最长连续递增序列
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l < i < r,都有 nums[i] < nums[i 1] &am…...
【无人机设计与技术】四旋翼无人机,UAV仿真,轨迹跟踪PID控制
摘要 本文探讨了四旋翼无人机(UAV)在轨迹跟踪中的PID控制仿真方法。通过设计三轴方向的PID控制器,调节无人机的姿态与位置,使其能够准确跟踪预设轨迹。本文使用MATLAB/Simulink进行了建模与仿真,验证了PID控制算法在无…...
回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测
回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提取特征与原始特征进行融合预测 文章目录 一、基本原理原理流程总结 二、实验结果三、核心代码四、代码获取五、总结 回归预测|基于卷积神经网络-支持向量机的数据回归预测Matlab程序CNN-SVM 卷积提…...
javaScript基础知识汇总
一、基础语法 1、区分大小写:无论是变量、函数名还是操作符,都区分大小写。 2、标识符:就是变量、函数、属性或函数参数的名称。标识符可以由一个或多个字符构成,但需要满足以下条件: 第一个字符必须是一个字母、下…...
《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)
目录 0. 前言 正文:参数管理 1. 参数访问 1.1 [目标参数] 1.2 [一次性访问所有参数] 1.3 [从嵌套块收集参数] 2. 参数初始化 2.1 [内置初始化] 2.2 [自定义初始化] 2.3 [参数绑定-共享参数] 3. 小结(第2节) 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 客户端,提供了简洁易用的图形用户界面(GUI)&am…...
【git】配置 Git 的换行符处理和安全性||安装 Ruby
配置 Git 的换行符处理和安全性: git config --global core.autocrlf input:这个设置确保在提交代码时,Git 会将 CRLF(Windows 的换行符)转换为 LF(Unix 的换行符),但在检出代码时不…...
Swin2SR惊艳效果展示:低清草稿图秒变4K高清作品集
Swin2SR惊艳效果展示:低清草稿图秒变4K高清作品集 你有没有遇到过这种情况?一张特别有感觉的AI生成图,可惜分辨率太低,放大后全是马赛克;一张珍贵的旧照片,像素模糊得看不清人脸;或者从网上找到…...
爆款AI写教材工具登场!一键生成低查重教材,轻松开启编写之旅
编写教材的困境与AI的解决方案 在编写教材时,如何准确地满足多样化的需求呢?不同年级的学生在认知能力上存在显著差异,教材内容若过于深奥或过于简单都无法达到效果;而课堂教学和自主学习等不同的环境对教材的要求各不相同&#…...
ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配
1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器,广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 12864 像素,内置 12864 bit 显示 RAM&#x…...
STM32F103 LoRa物理层驱动库详解与工程实践
1. 项目概述LoRa_STM32 是一个面向 STM32F103CB 微控制器平台的 LoRa 通信库,本质是 sandeepmistry/arduino-LoRa 库在 STM32 平台上的适配分支。它并非独立开发的全新协议栈,而是通过 Arduino Core for STM32(rogerclarkmelbourne/Arduino_S…...
手把手教你用ROS2和ZED2 SDK搭建3D视觉开发环境(Ubuntu 20.04版)
手把手教你用ROS2和ZED2 SDK搭建3D视觉开发环境(Ubuntu 20.04版) 在自动驾驶、增强现实和机器人导航等领域,3D视觉感知已成为核心技术之一。ZED2相机凭借其双目深度感知能力和高精度SLAM算法,成为开发者构建空间智能系统的首选传感…...
Pixel Fashion Atelier惊艳案例:‘赛博神社’主题皮装在明亮城镇UI下的生成
Pixel Fashion Atelier惊艳案例:‘赛博神社’主题皮装在明亮城镇UI下的生成 1. 项目概览 Pixel Fashion Atelier(像素时装锻造坊)是一款基于Stable Diffusion与Anything-v5的图像生成工作站。与传统AI工具不同,它采用了复古日系…...
Simulink三相变压器模块深度解析:从参数配置到电力系统仿真实战
1. 三相变压器模块的核心功能解析 Simulink中的Three-Phase Transformer模块就像电力系统的"翻译官",专门负责处理三相交流电的电压转换和相位调整。我在电力电子项目中最常使用的就是这个模块,因为它能完美还原真实变压器的各种"脾气秉…...
UniApp+Vue3避坑指南:为什么getAppWebview会失效?从原理到解决方案
UniAppVue3深度解析:getAppWebview失效的底层逻辑与工程化解决方案 在UniApp与Vue3的技术栈组合中,不少开发者遭遇过getAppWebview神秘失效的困境。这个看似简单的API调用问题,背后却隐藏着Vue3响应式系统变革与UniApp多端渲染机制的深层交互…...
保姆级教程:用Docker快速搭建一个可复现的Hive测试环境(专治各种启动报错)
从零构建可复现的Hive沙箱:Docker Compose全流程避坑指南 每次调试Hive时遇到FAILED: HiveException或metastore连接问题,是否感觉像在破解一个没有说明书的密码锁?传统环境配置的不可复现性让问题排查变成一场噩梦。本文将带你用Docker技术…...
Leather Dress Collection惊艳效果:Leather_Romper皮连体衣+户外场景自然光渲染
Leather Dress Collection惊艳效果:Leather_Romper皮连体衣户外场景自然光渲染 1. 项目介绍 Leather Dress Collection 是一个基于Stable Diffusion 1.5的LoRA模型集合,专门用于生成各种皮革服装风格的图像。这个系列由Stable Yogi开发,包含…...
