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…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...

VASP软件在第一性原理计算中的应用-测试GO
VASP软件在第一性原理计算中的应用 VASP是由维也纳大学Hafner小组开发的一款功能强大的第一性原理计算软件,广泛应用于材料科学、凝聚态物理、化学和纳米技术等领域。 VASP的核心功能与应用 1. 电子结构计算 VASP最突出的功能是进行高精度的电子结构计算ÿ…...