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

Pod和Deployment

一、pod

Evicted状态:
在Kubernetes中,当节点资源紧张时,Kubelet可能会驱逐节点上的一些Pods以释放资源。当这种情况发生时,Pod的状态会被设置为"Evicted"。

1.pod的探针

1.就绪性探针: 一般用于探测容器内的程序是否健康,容器是否准备好服务请求。
2.存活性探针: 用于探测容器是否运行。如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其重启策略的影响决定是否重启。如果容器不提供存活探针,则默认状态为 Success。
3.启动探针: 探测容器中的应用是否已经启动。如果提供了启动探测(startup probe),则禁用所有其 他探测,直到它成功为止。

2.pod节点选择器

1.nodename

nodeName属性是Pod的调度到具体节点的直接方法。它指定Pod应当运行在一个名为nodeName的特定节点上。
例:

spec:nodeName: 31.hiuiu.com

2.nodeSelector

nodeSelector是另一种控制Pod调度到特定节点的方式,它使用标签选择器来选择符合条件的节点。这个方法更灵活,因为它基于节点的标签来进行选择,而不是硬编码节点名称。(需要给node节点打上对应标签)
例:

spec:nodeSelector:nodeNum: node2

3.node亲和性

Node 亲和性(Node Affinity)是一种调度机制,允许你控制Pod调度到满足特定条件的节点上。Node 亲和性用于定义Pod对节点的需求,从而实现更灵活的资源管理和调度策略。

亲和性类型

RequiredDuringSchedulingIgnoredDuringExecution(必需的调度期间,运行期间忽略):这表示Pod必须被调度到满足指定条件的节点上。如果没有符合条件的节点,Pod将无法调度。这个设置对调度有强制要求。
PreferredDuringSchedulingIgnoredDuringExecution(优选的调度期间,运行期间忽略):这表示Pod优先被调度到符合指定条件的节点上,但不是强制要求。如果没有符合条件的节点,Pod仍然可以调度到其他节点。这种设置是优选的,不是强制的。

亲和性规则

键/值对:Node 亲和性使用节点的标签(key/value pairs)来匹配。你可以根据节点的标签定义Pod的亲和性规则。
操作符:

In:值必须在指定的集合中。
NotIn:值不能在指定的集合中。
Exists:键存在即可(不关心值)。
DoesNotExist:键不存在。
Gt 和 Lt:值大于或小于指定值(用于数值比较)。
实例
apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: disktypeoperator: Invalues:- ssd- hddpreferredDuringSchedulingIgnoredDuringExecution:- preference:matchExpressions:- key: environmentoperator: Invalues:- productionweight: 1containers:- name: example-containerimage: nginx

在这个示例中:
1.requiredDuringSchedulingIgnoredDuringExecution:Pod必须调度到disktype标签的值为ssd或hdd的节点上。
2.preferredDuringSchedulingIgnoredDuringExecution:优先调度到environment标签的值为production的节点上,权重为1。即使没有符合条件的节点,Pod也可以调度到其他节点。

4.污点和容忍度

给了节点选则的主动权,我们给节点打一个污点,不容忍的pod就运行不上来,污点就是定义在节点上的键值属性数据,可以定决定拒绝那些pod

  • taints 是键值数据,用在节点上,定义污点;
  • tolerations 是键值数据,用在pod上,定义容忍度,能容忍哪些污点
  • pod亲和性是pod属性;但是污点是节点的属性,污点定义在nodeSelector
# 标记污点:
kubectl taint node 31.hiuiu.com node-type=production:NoSchedule
kubectl taint node 32.hiuiu.com disk-type=ssd:NoSchedule
# 删除污点
kubectl taint node 32.hiuiu.com disk-type=ssd:NoSchedule-
# 查看污点
kubectl describe node 32.hiuiu.com | grep Taints
# 配置容忍度:
tolerations:
- key: "node-type"
operator: "Equal"
value: "production1"
effect: "NoSchedule"

二、Deployment

Deployment是Replicat的一个升级版本,具备动态升级和回滚功能。
Deployment是kubernetes中最常用的资源对象,为ReplicaSet和Pod的创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态,通过定义一个Deployment控制器会创建一个新的ReplicaSet控制器,通过ReplicaSet创建pod,删除Deployment控制器,也会删除Deployment控制器下对应的ReplicaSet控制器和pod资源.

示例

apiVersion: apps/v1
kind: Deployment
metadata:name: my-applabels:app: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80

apiVersion:指定Deployment的API版本。
kind:资源类型,设置为Deployment。
metadata:包含Deployment的名称和标签。
spec:定义Deployment的规格。
replicas:指定Pod副本的数量。Deployment会确保有这个数量的Pod副本运行。
selector:定义如何选择Pod。matchLabels用于匹配Pod的标签,以便Deployment管理这些Pod。
template:Pod模板,定义了Pod的规范,包括Pod的标签和容器配置。
metadata:定义Pod的标签。
spec:定义Pod中的容器规范,包括容器名称、镜像、端口等。

常见操作

1.创建Deployment

使用以下命令创建Deployment:

kubectl apply -f deployment.yaml
2.查看Deployment状态

使用以下命令查看Deployment的状态和Pod副本:

kubectl get deployments
kubectl describe deployment my-app
3.更新Deployment

更新Deployment的配置或镜像版本:

kubectl set image deployment/my-app my-container=new-image:tagkubectl edit deployment/nginx-deployment
#直接在 Kubernetes 集群中编辑资源的配置

方法2:vim 修改yaml文件后重新kubectl apply

4.回滚Deployment

回滚到之前的版本:

kubectl rollout undo deployment/my-appkubectl rollout history deployment/nginx-deployment
#查看当前 Deployment 的所有可用修订版本kubectl rollout pause deployment/nginx-deployment
#暂停 Kubernetes Deployment 的滚动更新过程
kubectl rollout resume deployment/nginx-deployment
#恢复之前暂停的滚动更新过程
5.删除Deployment

删除Deployment及其管理的Pod:

kubectl delete deployment my-app

相关文章:

Pod和Deployment

一、pod Evicted状态: 在Kubernetes中,当节点资源紧张时,Kubelet可能会驱逐节点上的一些Pods以释放资源。当这种情况发生时,Pod的状态会被设置为"Evicted"。 1.pod的探针 1.就绪性探针: 一般用于探测容器…...

7. 数据结构—二叉树(链式存储)

1. 内容 包括链式存储二叉树的 递归与非递归实现的先序、中序以及后序遍历、层序遍历、创建二叉树、计算深度、总节点数。 2. 实现代码 注意:只是伪代码,如果想要运行的话在细节方面需要自己修正,栈和队列的方法实现需要引进或者使用其C自…...

AScript 的UI asui模板的导入

两种方案: 第一种直接在web端,右击UI文件夹 第二种在pycharm,也是右击UI文件夹 调用UI,在init类中直接调用即可...

Linux shell编程学习笔记75:sed命令——沧海横流任我行(下)

0 前言 在 Linux shell编程学习笔记73:sed命令——沧海横流任我行(上)-CSDN博客文章浏览阅读684次,点赞32次,收藏24次。在大数据时代,我们要面对大量数据,有时需要对数据进行替换、删除、新增、…...

探索Scratch中的物理世界:碰撞与重力的编程之旅

标题:探索Scratch中的物理世界:碰撞与重力的编程之旅 Scratch是一款由麻省理工学院媒体实验室开发的编程教育工具,它以图形化编程界面为特色,让初学者能够轻松地学习编程基础。Scratch不仅支持基本的编程逻辑,如循环、…...

大模型重塑就医体验:医联MedGPT助力健康中国建设

来源:新华网 2024 08/22 11:24:15 【责任编辑:吴起龙】 随着“百模大战”的加速推进,AI大模型的应用逐渐成为各行业关注的焦点。在这一背景下,医疗行业也迎来了AI技术的深度渗透。自2023年起,百度、科大讯飞、百川智能、商汤…...

TOMCAT全解

目录 一 、WEB技术简介 HTTP协议 B/S 结构 前端三大核心技术简介 HTML CSS JavaScript 二 、WEB框架 web资源和访问 后台应用架构 三、tomacat的介绍 四、tomcat的部署 tomcat的反向代理 tomcat的负载均衡 memcached的安装与启动 tomcat的session会话保持 一 、WE…...

UDP+TCP

一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数:socket的fd; 保存数据的空间地址 ; 空间大小; 默认接收方式(默认阻塞&#xf…...

分页查询面试记录和面试详情

文章目录 1.分页查询面试记录1.req和vo1.InterviewHistoryReq.java2.InterviewHistoryVO.java 2.InterviewController.java3.service1.InterviewHistoryService.java2.InterviewHistoryServiceImpl.java 4.测试 2.查询面试详情1.InterviewQuestionHistoryVO.java2.InterviewCon…...

Oracle 同义词SYNONYM 的实战使用

Oracle中的同义词(SYNONYM)是一种数据库对象,它为其他数据库对象(如表、视图、序列、存储过程、函数等)提供了一个别名。这个别名可以在SQL语句中代替原始对象的名称,从而简化查询和引用,提高数…...

实验11-1-8 查找子串

本题要求实现一个字符串查找的简单函数。 函数接口定义: char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。 输入样例1: The C Programming Language ram输出样…...

Git存储库添加空目录-添加占位文件

Git本身并不会跟踪和管理空目录,它只会记录和管理文件的变化。因此,在操作空目录时,我们需要借助一些技巧来实现我们的需求。通过添加一个空的.gitignore或.gitkeep文件或添加一个占位文件,我们可以欺骗Git,并使其将空…...

基于x86 平台opencv的图像采集和seetaface6的人脸识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸识别功能,opencv通过读取本地图像,将采集的本地图像送给seetaface6的人脸识别模块从而实现人脸识…...

Git 的基本使用

1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来,例如下面代码创建了gitcode_linux的文件夹,之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c…...

如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS

我认为,现在自动化任务越多,越能体现它们的价值,因此挑战也变得更加明显和困难。例如,Cloudflare 目前提供了强有力的安全措施来保护网站免受所有形式的自动化工具的侵扰。 但对于从事自动化项目(如网络爬虫、数据提取…...

笔记redis

Redis 介绍 Redis(Remote Dictionary Server)是用C语言开发的一个基于内存的键值对数据库 所有数据都在内存中,访问速度非常快:读的速度是110000次/s,写的速度是81000次/s适合存储热点数据(商品、新闻资…...

Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱

Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱接入 🌟 手机短信与邮箱短信验证码的应用场景 在现代应用中,短信和邮箱验证码是用户验证和安全管理的关键组成部分。它们广泛应用于注册、登录、找回密码等场景&#xf…...

RAID 方案比较

RAID(Redundant Array of Independent Disks)技术用于将多个磁盘驱动器组合成一个逻辑单元,以提高性能、可靠性或两者兼顾。以下是常见 RAID 级别的比较: RAID 0(条带化) 磁盘数量:最少 2 块可…...

零成本搭建个人 APP 和小程序后台

前言 前面也说了,通过 GitHub PagesGitHub Actions 只是解决了动态数据展示,但是要零成本得完成将用户信息存储下来,并实现数据交互呢? 我开始是想用云文档,种种原因,我还是希望有个自己能二次修改的后台…...

LCP 633 平方数之和 [leetcode - 8]

最近是在研究双指针啊,leetcode刷的题都是这方面的。都记录在最近的文章里,大家有兴趣可以去我主页看看 LCP633 平方数之和 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入&…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...