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 的换行符),但在检出代码时不…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
