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

c语言试题及答案

1. 一个C程序的组成部分可以是(  )。 A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数 C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序 2. 一个C程序的执行是从( )。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函…...

python实现链表

什么是链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接最终串联成一个链表。 python实现一个简单链表 我们可以用python实现一个超级简单的链表 class node:# 初始化数据def __init_…...

Linux Shell 编程基础入门(一)

😀前言 本篇博文是关于自动化工具Shell 编程的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...

大白话讲微服务的灾难性雪崩效应

讲在前面,为什么微服务需要有熔断等策略呢?今天我们用大白话来讲讲微服务的灾难性雪崩效应,熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应? 假设我们有两个访问量比较大的服务A和B,这两个服务分别依…...

配置 K3s 访问私有镜像仓库

1.修改 K3s 配置文件 1)对于较新的 K3s 版本,你可以通过编辑 K3s 的配置文件来指定镜像仓库。编辑 /etc/rancher/k3s/config.yaml 文件(如果不存在则需要创建),添加或修改以下配置: # /etc/rancher/k3s/config.yaml …...

数学建模之数据分析【七】:对Pandas DataFrame 进行切片

文章目录 一、切片简介二、创建Pandas数据框三、使用iloc进行切片3.1 对行进行切片3.2 对列进行切片3.3 Dataframe选中特定单元格 四、使用loc创建切片4.1 使用Python对Dataframe中的行进行切片4.2 指定单元格 五、在Python中使用布尔条件六、结论 对 Pandas DataFrames 进行切…...

删除 Docker 容器的日志文件

删除 Docker 容器的日志文件可以帮助释放磁盘空间。以下是步骤: 1、查找日志文件路径: Docker 容器的日志通常存储在 /var/lib/docker/containers/<container_id>/ 目录下。日志文件通常名为 container_id-json.log。 通过以下命令找到日志文件的位置: docker ins…...

DevOps入门(上)

1: DevOps概念 &#xfeff;&#xfeff;DevOps: Development 和 Operations 的组合 DevOps 看作开发&#xff08;软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xff09;三者的交集。 突出重视软件开发人员和运维人员的沟通合作&#xff0c;通过自动化流程来使…...

基于Python的网易民谣歌词数据分析的设计与实现

基于Python的网易民谣歌词数据分析的设计与实现 Design and Implementation of Data Analysis for NetEase Folk Song Lyrics Based on Python 完整下载链接:基于Python的网易民谣歌词数据分析的设计与实现 文章目录 基于Python的网易民谣歌词数据分析的设计与实现摘要第一章…...

趋动科技联合云轴科技推出GPU云原生超融合解决方案

近日&#xff0c;趋动科技VirtAITech携手云轴科技ZStack推出GPU云原生超融合联合解决方案&#xff0c;提供全面、可扩展的云原生GPU存算一体化解决方案。 该方案基于云原生超融合及GPU资源池化技术&#xff0c;使得GPU资源管理变得更加简便易用&#xff0c;能够帮助企业用户在…...