k8s 启动和删除pod

news2024/11/16 10:41:47

k8s创建pod

pod的启动流程

流程图

运维人员向kube-apiserver发出指令(我想干什么,我期望事情是什么状态)

api响应命令,通过一系列认证授权,把pod数据存储到etcd,创建deployment资源并初始化。(期望状态)

controller通过list-watch机制,监听api server读取etcd,发现新的deployment,将该资源加入到内部工作队列,发现该资源没有关联的pod和replicaset,启用deployment controller创建replicaset资源,再启用replicaset controller创建pod。所有controller被创建完成后.将deployment,replicaset,pod资源更新存储到etcd。

scheduler通过list-watch机制,监听api server读取etcd,发现新的pod,经过主机过滤、主机打分规则,将pod绑定(binding)到合适的主机,并将绑定结果存储到etcd。

kubelet每隔 20s(可以自定义)向apiserver获取自身Node上所要运行的pod清单.通过与自己的内部缓存进行比较,用容器运行时软件(docker或containerd)拉取镜像创建pod。

kube-proxy为新创建的pod注册动态DNS到CoreOS。给pod的service添加iptables/ipvs规则,用于服务发现和负载均衡。

controller通过control loop(控制循环)将当前pod状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则controller会将pod修改为用户期望状态,实在不行会将此pod删掉,然后重新创建pod。
 

实践案例:控制器的方式创建nginx的pod

流程图

1.使用kubectl创建nginx的pod

[root@k8s-master ~]# kubectl create deployment k8s-nginx --image=nginx -r 3


 

相当于docker run去启动容器,背后一样要去拉取镜像

  • create deployment,创建部署控制器
  • k8s-nginx,命名部署控制器
  • –image,指定使用的镜像
  • -r 3,建立三个副本,删除后也会自动补充

2.查看部署控制器

[root@k8s-master ~]# kubectl get deployment
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
k8s-nginx   3/3     3            3           14m

 3.查看副本控制器

[root@k8s-master ~]# kubectl get replicaset
NAME                   DESIRED   CURRENT   READY   AGE
k8s-nginx-75f95db655   3         3         3       15m

4.查看pod的详细信息

[root@k8s-master ~]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
k8s-nginx-75f95db655-24mfb   1/1     Running   0          17m   10.244.140.73   k8s-node-2   <none>           <none>
k8s-nginx-75f95db655-fl5cc   1/1     Running   0          17m   10.244.109.81   k8s-node-1   <none>           <none>
k8s-nginx-75f95db655-txf25   1/1     Running   0          17m   10.244.109.80   k8s-node-1   <none>           <none>

 

参数的含义

status

  • Running,正常运行
  • Terminating,正在终止
  • Container Created,正在创建容器

pod的命名规则

k8s-nginx-75f95db655-24mfb
  • 部署控制器名+副本控制器名+pod名

5.进入pod容器

[root@k8s-master ~]# kubectl exec -it k8s-nginx-75f95db655-24mfb -- bash
root@k8s-nginx-75f95db655-24mfb:/#
  • kubectl exec 进入pod容器
  • -it 交互式进入容器
  • – bash指定解释器

6.删除pod容器

[root@k8s-master ~]# kubectl delete pod k9s-nginx-68df494c64-529qk
  • delete,删除指定pod

删除一个pod后,因为副本控制器指定为3,尽管删除一个后,也会自动补充一个pod

7.删除部署控制器

[root@k8s-master ~]# kubectl delete ployment k8s-nginx-75f95db655

删除部署控制器后,就会彻底删除所有的副本控制器以及pod

二、删除pod

在日常的k8s运维过程中,避免不了会对某些pod进行剔除,那么如何才能正确的剔除不需要的pod呢?

首先,需要查出想要删除的pod
# 可通过任意方式进行查询
kubectl get pods -A |grep <podname>
kubectl get pods -n <namespace>
kubectl get pods --all-namespaces |grep <podname> 
kubectl 删除pod命令
kubectl delete pod <podname> -n <namespace>

例如:kubectl delete pod nginx-web-460776586-f6nf0 -n yundoc 
可是这里你会发现,在进行删除delete pod后,并不会直接删除。该pod会自动重新构建(可以理解为重启、重构),原因是k8s误认为我们要删除的pod异常挂了,会启用容灾机制,导致重新再拉起一个新的pod。

我们想要正常且彻底的删除一个pod,必须要先破坏掉他的容灾机制,即删除deployment机制。

查看deployment信息
#可理解是调度管理pod的
kubectl get deployment --all-namespaces
kubectl get deployment -n kube-system
删除deployment配置
kubectl delete deployment <deployment名> -n <namespace>

例如:kubectl delete deployment nginx-web -n yundoc
删除deployment,pod会随之删除。

可通过再次查看pod状态,然后进行删除pod命令即可,通常情况下删除deployment后,再次查询pod发现,pod已经开始自行删除了(这步可酌情处理)。
 

当然,也可以导出yaml文件,进行修改重启策略,重新启动pod , 我在之前的文章中也提到了。

然后再去删除pod 也是可以的。这个场景使用再测试环境或者生产环境都有可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/958046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++信息学奥赛1184:明明的随机数

#include <bits/stdc.h> using namespace std; int main() {int n; // 数组长度cin >> n; // 输入数组长度int arr[n]; // 定义整数数组&#xff0c;用于存储输入的整数// 输入数组元素for (int i 0; i < n; i){cin >> arr[i];}int e 0; // 计数器&…

长胜证券:政策暖风不断 静待春暖花开

长胜证券指出&#xff0c;经济数据的逐步企稳上升&#xff0c;能够提振商场对经济复苏的决心&#xff0c;同时弱复苏布景下&#xff0c;政策的刺激力度也将为商场走强供给良好的土壤。暖风持续发布下&#xff0c;多方力量也在悄然间发生变化&#xff0c;重视权重、金融板块回暖…

docker命令学习

docker vscode插件出现的问题 docker命令 docker images &#xff08;查看所有的镜像&#xff09; docker ps -a &#xff08;查看所有的容器&#xff09; docker ps &#xff08;查看运行的容器&#xff09; docker run imageID docker run --gpus all --shm-size8g -it imag…

什么是数字孪生?

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 走进一家汽车装配厂。看到工人将螺母逐渐减少到螺栓上。听到气动工具的嗡嗡声。观看原始的车身沿着生产线滑行&#xff0c;机器人卷起零件。 现在&#xff0c;在线启动其 3D 数字孪生。看到动画数字人类在完全相同但数…

大数据学习:kafkaManager功能详解

kafkaManager功能详解 一.添加集群 1.1 常用参数说明 下面已常用的选项作说明 1&#xff09;Enable JMX Polling 是否开启 JMX 轮训&#xff0c;该部分直接影响部分 kafka broker 和 topic 监控指标指标的获取&#xff08;生效的前提是 kafka 启动时开启了 JMX_PORT。主要影…

Vue基础1:生命周期汇总(vue2)

Description 生命周期图&#xff1a; 可以理解vue生命周期就是指vue实例从创建到销毁的过程&#xff0c;在vue中分为9个阶段&#xff1a;创建前/后&#xff0c;载入前/后&#xff0c;更新前/后&#xff0c;销毁前/后&#xff0c;其他&#xff1b;常用的有&#xff1a;created&…

Spring容器及实例化

一、前言 Spring 容器是 Spring 框架的核心部分&#xff0c;它负责管理和组织应用程序中的对象&#xff08;Bean&#xff09;。Spring 容器负责创建、配置和组装这些对象&#xff0c;并且可以在需要时将它们提供给应用程序的其他部分。 Spring 容器提供了两种主要类型的容器&…

【Eclipse】搭建python环境;运行第一个python程序helloword

目录 0.环境 1.需准备&搭建思路 2.搭建具体步骤 1&#xff09;查看是否安装过python 2&#xff09;安装eclipse 3&#xff09;安装和配置pyDev 3.创建第一个python程序具体步骤 1&#xff09;新建项目 2&#xff09;输入项目名字&#xff0c;和配置选项 3&#x…

用户角色权限demo后续出现问题和解决

将demo账号给到理解和蒋老师&#xff0c;测试的时候将登录人账号改了&#xff0c;结果登录不了了&#xff0c;后续还需要分配权限无法更改他人的账号和密码 将用户和权限重新分配&#xff08;数据库更改&#xff0c;不要学我&#xff09; 试着登录还是报一样的错&#xff0c;但…

OA项目之用户登录首页展示

目录 本章节目标&#xff1a;完成OA项目用户登录及首页展示 一.用户登录 User.java UserDao.java IUserDao.java UserAction.java login.jsp&#xff08;登录界面&#xff09; userManage.jsp (数据绑定&#xff0c;修改&#xff0c;删除) userEdit.jsp&#xff08;用…

基于相空间重构的混沌背景下微弱信号检测算法matlab仿真,对比SVM,PSO-SVM以及GA-PSO-SVM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 SVM 4.2 PSO-SVM 4.3 GA-PSO-SVM 5.算法完整程序工程 1.算法运行效果图预览 SVM: PSO-SVM: GA-PSO-SVM: 以上仿真图参考文献《基于相空间重构的混沌背景下微弱信号检测方法研究》 2.…

AAC和ADTS音频格式解析

1.ADTS是个啥 ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。 记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般…

加速关断BJT开关电路

引言&#xff1a;BJT从导通到关闭存在一定的延时&#xff0c;在特定的场景中比如BJT电平转换&#xff0c;高频信号调理&#xff0c;这种延时存在很大的隐患&#xff0c;本节简述如何消除BJT的关断延时。 €1.延时的产生机理 类似于图15-1&#xff0c;晶体管从截止状态切换到导…

干货| ICML2023:作为自适应自进化规划器的扩散模型

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 作者介绍 梁志烜 香港大学计算机系直博一年级学生&#xff0c;导师为罗平教授&#xff0c;研究兴趣是生成式机器学习&#xff0c;Embodied AI和Data-centric learning。 报告题目 作为自适应自进化规划器的扩散…

本地部署体验LISA模型(LISA≈图像分割基础模型SAM+多模态大语言模型LLaVA)

GitHub地址&#xff1a;https://github.com/dvlab-research/LISA 该项目论文paper reading&#xff1a;https://blog.csdn.net/Transfattyacids/article/details/132254770 在GitHub上下载源文件&#xff0c;进入下载的文件夹&#xff0c;打开该地址下的命令控制台&#xff0c;…

耐蚀点蚀镀铜工艺

引言 随着5G技术的推出&#xff0c;导致电子电路和IC基板在设计中要求更高的密度。由于5G应用的性质&#xff0c;这些设计中的高可靠性和出色的电气性能也越来越重要。为了满足5G应用和其他下一代设备平台的需求&#xff0c;逐渐建立了使用改良半加成加工(mSAP)制造电路板的制…

前端将UTC时间格式转化为本地时间格式~~uniapp写法

UTC时间格式是什么 首先我们先简单的了解一下&#xff1a;UTC时间&#xff08;协调世界时&#xff0c;Coordinated Universal Time&#xff09;使用24小时制&#xff0c;以小时、分钟、秒和毫秒来表示时间 HH:mm:ss.SSSHH 表示小时&#xff0c;取值范围为00到23。mm 表示分钟…

photoshop,ps自带“不规则图形”在哪

下拉箭头&#xff08;2步&#xff09;后有个“齿轮”&#xff0c;点击齿轮&#xff0c;列表里有“全部”。

大数据HBase学习圣经:一本书实现HBase学习自由

学习目标&#xff1a;三栖合一架构师 本文是《大数据HBase学习圣经》 V1版本&#xff0c;是 《尼恩 大数据 面试宝典》姊妹篇。 这里特别说明一下&#xff1a;《尼恩 大数据 面试宝典》5个专题 PDF 自首次发布以来&#xff0c; 已经汇集了 好几百题&#xff0c;大量的大厂面试…

Springboot 接口方式硬通知实现ConfigurationProperties 、@Value 动态刷新

前言 看到这个文章标题&#xff0c;也许有的看官就觉得很多余&#xff0c; 因为Nacos 可以设置 NacosValue(value "${XXX}",autoRefreshed true) 实现动态刷新&#xff1b; 又因为cloud config的RefreshScope 实现动态刷新&#xff1b; 还有阿波罗...等 这…