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

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...