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)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
