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中极其重要,大多数资源的相互关联就需要使用标签;也就是说,资源的相互关联大多数时候,是使用标签进行关联的; 2.其他作用,在k8s集群中,node节点的一些操作比如污点及污…...
能源党建后台项目总结
1.引入 本次框架是Ruoyi-plusvue2element组合。 2.样式 由于是后台项目,样式要求统一,不可以有的输入框长有的短。着重几点: 1.关于form表单应该如何水平布局 在element中,form有个属性叫::inline"true"…...
股票高胜率的交易法则是什么?
股票交易中的高胜率交易法则并非一成不变,而是根据市场状况、个人投资风格和经验等多种因素综合而定的。以下是一些有助于提升交易胜率的法则和策略: 1.趋势跟踪法则:在股票交易中,趋势跟踪是一种有效的策略。通过观察大盘和个股…...
C语言 | sizeof与strlen的区别(附笔试题)
目录: 1. sizeof和strlen的对比 2. 数组和指针 笔试题解析 3. 指针运算 笔试题解析 内容多多,需耐心看完,加油!!! 一.sizeof和strlen的对比 1.1 sizeof 在学习操作符的时候,我们学习了 s…...
AI自动绘画器介绍和应用场景
AI自动绘画器是一种利用人工智能技术来生成绘画作品的工具。以下是一些常见的AI自动绘画器: DeepDream: 风格:可以生成三种风格的图片,包括深度梦幻风格、深度风格和浅层风格。应用场景:起初设计用于帮助研究人员理解…...
java二叉树前中后序遍历
代码随想录解题思路🆒力扣前序题目🆒力扣中序题目🆒力扣后序题目 递归遍历 // 前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res new ArrayList<>();preorder(root…...
【LeetCode刷题笔记】LeetCode 1365.有多少小于当前数字的数字
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 更多算法知识专栏:算法分析🔥 给大家跳段街舞感谢…...
室内定位中文综述阅读
1 室内高精度定位技术总结与展望 [4]柳景斌,赵智博,胡宁松等.室内高精度定位技术总结与展望[J].武汉大学学报(信息科学 版),2022,47(07):997-1008.DOI:10.13203/j.whugis20220029. 1.1.1 WiFi‐RTT定位 2016 年 12 月,随着新版 IEEE802.11 标准的公布,…...
微信小程序uniapp+vue电力巡线任务故障报修管理系统2q91t
uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 前端开发:vue 语言: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迭代器都不支持修改。(这点可以根据源代码看出来,都是对const iterator进行了type…...
Open CASCADE学习|求曲面的参数空间
在三维空间中,任意的曲面都可以通过特定的方法映射到一个二维参数平面上,从而对其进行详细的几何分析和处理。首先,我们需要从三维模型中提取出特定的曲面,这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…...
代码随想录阅读笔记-二叉树【总结】
二叉树的理论基础 代码随想录 (programmercarl.com):二叉树的种类、存储方式、遍历方式、定义方式 二叉树的遍历方式 深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客:递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…...
【SpringBoot整合系列】SpringBoot整合FastDFS(二)
目录 SpringBoot整合FastDFSJava客户端/依赖常用api接口解释1.uploadFile参数返回值 2.uploadSlaveFile参数返回值 3.getMetadata参数返回值 4.overwriteMetadata参数:返回值:无 5.mergeMetadata参数:返回值:无 6.queryFileInfo参…...
L2-2 巴音布鲁克永远的土(二分+并查集)
思路:我们可以二分答案,然后判断当前答案合不合理。 对于判断答案合理,可以用并查集,看mid能否把所有检查点连进一个集合中,枚举每个结点,如何当前结点周围的四个方向可以连的话,就加进同一个集…...
Spring Cloud学习笔记:Eureka简介,Eureka简单样例
这是本人学习的总结,主要学习资料如下 - 马士兵教育 [TOC](目录)1、Eureka 1.1、架构 Eureka是SpringCloud Nexflix的核心子模块,其中包含Server和Client。 Server提供服务注册,存储所有可用服务节点。 Client用于简化和Server的通讯复杂…...
【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)
0x01 产品简介 Welcart 是一款免费的 WordPress 电子商务插件。Welcart 具有许多用于制作在线商店的功能和自定义设置。您可以轻松创建自己的原始在线商店。 0x02 漏洞概述 Welcart存在任意文件读取漏洞,未授权的攻击者可以通过该漏洞读取任意文件,获…...
快速排序:深入解析其原理、实现与性能特性
快速排序,以其名字所示,是一种追求速度的高效排序算法。作为分治法在排序问题上的典型应用,快速排序凭借其平均情况下近乎理想的O(n log n)时间复杂度和简洁的实现逻辑,在实际编程与数据处理中占据着重要地位。本篇博客将详细解析…...
一文看懂Mac地址
一、Mac地址是什么? 虽然IP地址已经成为一个家喻户晓的术语,但还有一个同样重要的数字标识符值得我们关注——MAC地址。在本文中,我们旨在阐明网络中这个经常被忽视的方面。加入我们,深入研究 MAC 地址的世界,了解它们…...
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…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
