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

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...