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

4.2.k8s的pod-标签管理、镜像拉取策略、容器重启策略、资源限制、优雅终止

一、标签管理

1.标签在k8s中极其重要,大多数资源的相互关联就需要使用标签;也就是说,资源的相互关联大多数时候,是使用标签进行关联的;
2.其他作用,在k8s集群中,node节点的一些操作比如污点及污点容忍等,都需要使用到标签;

查看标签

[root@k8s1 pod]# kubectl get pod --show-labels
NAME            READY   STATUS    RESTARTS   AGE    LABELS
my-pod-hpm      1/1     Running   0          40m    <none>
pod-env         1/1     Running   0          22m    <none>
pod-hnw         1/1     Running   0          64m    <none>
volumes-nfs01   1/1     Running   0          3h2m   <none>
volumes-nfs02   1/1     Running   0          3h2m   <none>

创建标签-声明式

# 创建资源清单

[root@k8s1 pod]# vi pod-labels.yaml 

apiVersion: v1
kind: Pod
metadata:name: m-nginx#给资源添加标签labels:name: "oslee"age: "18"
spec:containers:- name: c-nginximage: nginx:1.20.1-alpine

[root@k8s1 pod]# kubectl apply -f pod-labels.yaml 
pod/m-nginx created

# 查看标签

[root@k8s1 pod]# kubectl get pod --show-labels 
NAME            READY   STATUS    RESTARTS   AGE     LABELS
m-nginx         1/1     Running   0          34m     age=18,name=oslee

创建标签-响应式

[root@k8s1 pod]# kubectl label pod m-nginx addr=beijing
pod/m-nginx labeled
[root@k8s1 pod]# kubectl get pod --show-labels 
NAME            READY   STATUS    RESTARTS   AGE     LABELS
m-nginx         1/1     Running   0          36m     addr=beijing,age=18,name=oslee

删除标签

[root@k8s1 pod]# kubectl label pod m-nginx addr-
pod/m-nginx unlabeled
[root@k8s1 pod]# kubectl get pod --show-labels 
NAME            READY   STATUS    RESTARTS   AGE     LABELS
m-nginx         1/1     Running   0          37m     age=18,name=oslee

修改标签

[root@k8s1 pod]# kubectl label pod m-nginx age=19 --overwrite
pod/m-nginx labeled
[root@k8s1 pod]# kubectl get pod --show-labels 
NAME      READY   STATUS    RESTARTS   AGE   LABELS
m-nginx   1/1     Running   0          82s   age=19,name=oslee

通过标签删除pod

# 通过标签删除pod

[root@k8s1 pod]# kubectl delete pod -l age=19
pod "m-nginx" deleted
 

# 删除全部标签

[root@k8s1 pod]# kubectl delete pods --all

二、pod的镜像拉取策略

IfNotPresent

只有当镜像在本地不存在时才会拉取。(先对本地进行排查,本地有该镜像直接使用,本地没有该镜像则选择在仓库中拉取)

Always

总是从仓库拉取镜像,无论本地是否存在镜像(即使本地中存在我们所指定的相关镜像,该策略也会先从仓库中拉取进行应用)

Never

Kubelet 不会尝试获取镜像。如果镜像已经以某种方式存在本地, kubelet 会尝试启动容器;否则,会启动失败。(如果本地不存在,并不会在仓库中拉取,直接报错)

[root@k8s1 pod]# vi pod-ipp.yaml

apiVersion: v1
kind: Pod
metadata:name: labels-podlabels:name: "oslee"age: "19"
spec:containers:- image: nginx:1.20.1-alpinename: nginx# 设置镜像拉取策略imagePullPolicy: IfNotPresent

[root@k8s1 pod]# kubectl apply -f pod-ipp.yaml 
pod/labels-pod created

三、pod中容器的重启策略

当pod中容器退出时,是否需要重新创建容器?

1,Always(默认值):当容器退出时(不论什么原因),自动拉起新的容器;

2,Never:当容器退出时(不论什么原因),都不会重新创建拉起新的容器;

3,OnFailure:当容器“意外退出”时,才会拉起新的容器;

[root@k8s1 pod]# vi pod-rp.yaml

apiVersion: v1
kind: Pod
metadata:name: labels-podlabels:name: oslee
spec:#设置容器重启策略restartPolicy: Alwayscontainers:- image: nginx:1.20.1-alpinename: nginx

[root@k8s1 pod]# kubectl apply -f pod-rp.yaml 
pod/labels-pod configured

四、pod的优雅终止

在pod的删除时,系统会自动延迟30s,为了给pod处理未处理完的请求;

vi pod-nginx.yaml

apiVersion: v1
kind: Pod
metadata:name: m-nginxlabels:name: oslee
spec:#pod优雅终止字段,定义延时kill信号的时间,给pod处理未完成的请求时间;#缓期多少秒时间执行;若不设置,默认是30s;terminationGracePeriodSeconds: 3containers:- name: c-nginximage: nginx:1.20.1-alpine#定义容器的生命周期(容器启动做什么动作,容器停止前做什么动作)lifecycle:#容器启动前做什么postStart:exec:command:- "sh"- "-c"- "echo \"postStart at $(date +%F_%T)\" >> /poststart.log "#容器停止前做什么preStop:exec:command:- "sh"- "-c"- "echo \"prestop at $(date +%F_%T)\" >> /prestop.log"

[root@k8s1 pod]# kubectl apply -f pod-nginx.yaml 
pod/m-nginx created
[root@k8s1 pod]# kubectl exec m-nginx -it -- sh
/ # cat poststart.log
postStart at 2024-04-06_09:34:43

五、pod中容器的资源限制

[root@k8s1 pod]# vi pod-resources.yaml

apiVersion: v1
kind: Pod
metadata:name: pod-res
spec:nodeName: k8s2containers:- name: c1image: nginx:1.20.1-alpine#设置资源限制resources:#最大资源的使用限制;最多就能用这么多的资源;limits:#2核心;cpu: 2000m#限制内存memory: 40M#期望资源限制;需要宿主机预留的资源,我可以不用,但是你必须要有;requests:#1核心cpu: 1000m#限制内存memory: 20M

[root@k8s1 pod]# kubectl apply -f pod-resources.yaml 
pod/pod-res created

# 查看资源限制,资源清单指定部署在节点k8s2上

[root@k8s2 ~]# docker stats | grep c1

六、pod的容器类型

01-基础架构容器【pause】:运行pod中的容器时,提供容器的网络名称空间

02-初始化容器【initContainers】:

  • 完成一些业务容器运行前的操作,如执行命令,如果初始化容器没有创建成功,将一直重启,业务容器也就无法创建出来;
  • 它可以延后业务容器的启动时间;

基础架构容器pause

查看基础架构容器

[root@k8s2 data]# docker container ps | grep pause

初始化容器initContainers

[root@k8s1 pod]# vi pod-init-c.yaml

apiVersion: v1
kind: Pod
metadata:name: pod-init-c
spec:#声明初始化容器initContainers:- name: init-c1image: alpine#在初始化容器中执行命令command: - "sleep"- "10"- name: init-c2image: alpinecommand:- "sleep"- "5"#业务容器containers:- name: c1image: alpine#给容器一个标准输入,也就是守护进程stdin: true

# 创建资源

[root@k8s1 pod]# kubectl apply -f pod-init-c.yaml 
pod/pod-init-c created

# 查看描述

[root@k8s1 pod]# kubectl describe pod/pod-init-c

七、pod中容器的守护进程

创建资源清单,拉取alpine最小linux系统

[root@k8s1 pod]# vi pod-alpine.yaml

apiVersion: v1
kind: Pod
metadata:name: m-alpine
spec:containers:- name: c1image: alpine:3.19.1

[root@k8s1 pod]# kubectl apply -f pod-alpine.yaml 
pod/m-alpine created 

[root@k8s1 pod]# kubectl get pod

查看pod资源,发现,启动后会结束,因为没有守护进程

守护进程,加入标准输入stdin

 [root@k8s1 pod]# vi pod-alpine.yaml

apiVersion: v1
kind: Pod
metadata:name: m-alpine
spec:containers:- name: c1image: alpine:3.19.1stdin: true

[root@k8s1 pod]# kubectl delete -f pod-alpine.yaml
pod "m-alpine" deleted
[root@k8s1 pod]# kubectl apply -f pod-alpine.yaml
pod/m-alpine created

[root@k8s1 pod]# kubectl get pod
NAME       READY   STATUS    RESTARTS   AGE
m-alpine   1/1     Running   0          48s

守护进程,命令方式

· command

apiVersion: v1
kind: Pod
metadata:name: m-alpine
spec:containers:- name: c1image: alpine:3.19.1#在容器当中执行命令command:- "tail"- "-f"- "/etc/hosts"

· args

apiVersion: v1
kind: Pod
metadata:name: m-alpine
spec:containers:- name: c1image: alpine:3.19.1args:- "tail"- "-f"- "/etc/hosts"

· command与args结合

args可以当做command的参数进行命令执行;

跟docker中的守护进程命令一样;command就类似于ENTRYPOINT;args就类似于CMD;

apiVersion: v1
kind: Pod
metadata:name: m-alpine
spec:containers:- name: c1image: alpinecommand:- "tail"- "-f"args:- "/etc/hosts"

八、pod排障之日志查询

# pod资源清单

[root@k8s1 pod]# vi pod-log-nginx.yaml

apiVersion: v1
kind: Pod
metadata:name: m-log-nginx
spec:terminationGracePeriodSeconds: 1containers:- name: c1image: nginx:1.20.1-alpine

[root@k8s1 pod]# kubectl apply -f pod-log-nginx.yaml 

#  模拟循环访问pod

[root@k8s1 pod]# kubectl get pod -owide
NAME          READY   STATUS    RESTARTS   AGE   IP            NODE   NOMINATED NODE   READINESS GATES
m-log-nginx   1/1     Running   0          1s    10.100.1.21   k8s2   <none>           <none>

while true ; 
do curl 10.100.1.21 ; sleep 0.5 
done

# 查看pod日志 

[root@k8s1 pod]# kubectl logs pod/m-log-nginx -f

# 如果pod中容器发生重启,如何查看重启前的容器的log日志信息?

[root@k8s1 pod]# kubectl logs -p pod/m-log-nginx -f

# 模拟容器重启

[root@k8s2 ~]# docker kill a0706cc1dd9a

九、进入pod容器exec与cp命令

#进入pod中容器

kubectl  exec  pod名称  -it  --  sh

#拷贝容器中数据到宿主机(默认pod中第一个容器)

kubectl  cp  pod名称:/root/123.txt    ./

#拷贝宿主机数据到容器

kubectl  cp  ./222.log   pod名称:/mnt/

#指定容器拷贝

kubectl  cp -c 容器名  pod名称:/root/123.txt    ./

#pod外部执行命令

[root@k8s1 pod]# kubectl exec m-log-nginx -it -- ifconfig

相关文章:

4.2.k8s的pod-标签管理、镜像拉取策略、容器重启策略、资源限制、优雅终止

一、标签管理 1.标签在k8s中极其重要&#xff0c;大多数资源的相互关联就需要使用标签&#xff1b;也就是说&#xff0c;资源的相互关联大多数时候&#xff0c;是使用标签进行关联的&#xff1b; 2.其他作用&#xff0c;在k8s集群中&#xff0c;node节点的一些操作比如污点及污…...

能源党建后台项目总结

1.引入 本次框架是Ruoyi-plusvue2element组合。 2.样式 由于是后台项目&#xff0c;样式要求统一&#xff0c;不可以有的输入框长有的短。着重几点&#xff1a; 1.关于form表单应该如何水平布局 在element中&#xff0c;form有个属性叫&#xff1a;:inline"true"…...

股票高胜率的交易法则是什么?

股票交易中的高胜率交易法则并非一成不变&#xff0c;而是根据市场状况、个人投资风格和经验等多种因素综合而定的。以下是一些有助于提升交易胜率的法则和策略&#xff1a; 1.趋势跟踪法则&#xff1a;在股票交易中&#xff0c;趋势跟踪是一种有效的策略。通过观察大盘和个股…...

C语言 | sizeof与strlen的区别(附笔试题)

目录&#xff1a; 1. sizeof和strlen的对比 2. 数组和指针 笔试题解析 3. 指针运算 笔试题解析 内容多多&#xff0c;需耐心看完&#xff0c;加油&#xff01;&#xff01;&#xff01; 一.sizeof和strlen的对比 1.1 sizeof 在学习操作符的时候&#xff0c;我们学习了 s…...

AI自动绘画器介绍和应用场景

AI自动绘画器是一种利用人工智能技术来生成绘画作品的工具。以下是一些常见的AI自动绘画器&#xff1a; DeepDream&#xff1a; 风格&#xff1a;可以生成三种风格的图片&#xff0c;包括深度梦幻风格、深度风格和浅层风格。应用场景&#xff1a;起初设计用于帮助研究人员理解…...

java二叉树前中后序遍历

代码随想录解题思路&#x1f192;力扣前序题目&#x1f192;力扣中序题目&#x1f192;力扣后序题目 递归遍历 // 前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();preorder(root…...

【LeetCode刷题笔记】LeetCode 1365.有多少小于当前数字的数字

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…...

室内定位中文综述阅读

1 室内高精度定位技术总结与展望 [4]柳景斌,赵智博,胡宁松等.室内高精度定位技术总结与展望[J].武汉大学学报(信息科学 版),2022,47(07):997-1008.DOI:10.13203/j.whugis20220029. 1.1.1 WiFi‐RTT定位 2016 年 12 月&#xff0c;随着新版 IEEE802.11 标准的公布&#xff0c…...

微信小程序uniapp+vue电力巡线任务故障报修管理系统2q91t

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 前端开发:vue 语言&#xff1a;javapythonnodejsphp均支持 运行软件:idea/eclipse/vscode/pycharm/wamp均支持 框架支持:Ssm/django/flask/t…...

springboot国际化多语言

1,新建国际化多语言文件 在resources目录下新建 messages.properties 其他语言的文件 编辑messages.properties文件,下方从text切换到Resource Bundle ,即可对照着编辑多语言文件 (如果没有找到Resource Bundle,先在settings->plugins中安装Resource Bundle Editor) 2,配…...

set和map

这里是目录标题 setinsertfinderasecountlower_boundupper_boundmultisetset的应用 mappairinsertinsert的pair map的遍历map对[ ]的重载(重点)multimap set set的普通迭代器和const迭代器都不支持修改。(这点可以根据源代码看出来&#xff0c;都是对const iterator进行了type…...

Open CASCADE学习|求曲面的参数空间

在三维空间中&#xff0c;任意的曲面都可以通过特定的方法映射到一个二维参数平面上&#xff0c;从而对其进行详细的几何分析和处理。首先&#xff0c;我们需要从三维模型中提取出特定的曲面&#xff0c;这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…...

代码随想录阅读笔记-二叉树【总结】

二叉树的理论基础 代码随想录 (programmercarl.com)&#xff1a;二叉树的种类、存储方式、遍历方式、定义方式 二叉树的遍历方式 深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客&#xff1a;递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…...

【SpringBoot整合系列】SpringBoot整合FastDFS(二)

目录 SpringBoot整合FastDFSJava客户端/依赖常用api接口解释1.uploadFile参数返回值 2.uploadSlaveFile参数返回值 3.getMetadata参数返回值 4.overwriteMetadata参数&#xff1a;返回值&#xff1a;无 5.mergeMetadata参数&#xff1a;返回值&#xff1a;无 6.queryFileInfo参…...

L2-2 巴音布鲁克永远的土(二分+并查集)

思路&#xff1a;我们可以二分答案&#xff0c;然后判断当前答案合不合理。 对于判断答案合理&#xff0c;可以用并查集&#xff0c;看mid能否把所有检查点连进一个集合中&#xff0c;枚举每个结点&#xff0c;如何当前结点周围的四个方向可以连的话&#xff0c;就加进同一个集…...

Spring Cloud学习笔记:Eureka简介,Eureka简单样例

这是本人学习的总结&#xff0c;主要学习资料如下 - 马士兵教育 [TOC](目录)1、Eureka 1.1、架构 Eureka是SpringCloud Nexflix的核心子模块&#xff0c;其中包含Server和Client。 Server提供服务注册&#xff0c;存储所有可用服务节点。 Client用于简化和Server的通讯复杂…...

【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)

0x01 产品简介 Welcart 是一款免费的 WordPress 电子商务插件。Welcart 具有许多用于制作在线商店的功能和自定义设置。您可以轻松创建自己的原始在线商店。 0x02 漏洞概述 Welcart存在任意文件读取漏洞&#xff0c;未授权的攻击者可以通过该漏洞读取任意文件&#xff0c;获…...

快速排序:深入解析其原理、实现与性能特性

快速排序&#xff0c;以其名字所示&#xff0c;是一种追求速度的高效排序算法。作为分治法在排序问题上的典型应用&#xff0c;快速排序凭借其平均情况下近乎理想的O(n log n)时间复杂度和简洁的实现逻辑&#xff0c;在实际编程与数据处理中占据着重要地位。本篇博客将详细解析…...

一文看懂Mac地址

一、Mac地址是什么&#xff1f; 虽然IP地址已经成为一个家喻户晓的术语&#xff0c;但还有一个同样重要的数字标识符值得我们关注——MAC地址。在本文中&#xff0c;我们旨在阐明网络中这个经常被忽视的方面。加入我们&#xff0c;深入研究 MAC 地址的世界&#xff0c;了解它们…...

2024.4.10作业

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } //显示时间 void Widget::timerEvent(QTimerEvent *e) { QT…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...