当前位置: 首页 > 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: 输入&…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...