当前位置: 首页 > news >正文

k8s中pod的创建过程和阶段状态

管理k8s集群

kubectl

k8s两种用户

一种登录

一种/sbin/nologin

linux可以密码登录可以证书登录

k8s只能证书登录

拿到这个证书可以管理集群

k8s所有节点被网络组件calico设置路由通信

所以podip可以主机访问

比如ping

如果pod运行web服务

也可以直接curl pod_ip访问到web服务

k8s集群容器管理使用方式:

pod系统进程中一个多进程的聚合单位

一个容器一个服务就是一个进程

同一个pod共享网络

pod的创建过程:

用户apiserver发送指令

apiserver会把指令信息记录数据库etcd中

pod创建过程是一个异步创建

scheduler通过watch机制

发现集群创建出来调度pod

scheduler决定这个pod运行哪个节点

scheduler作为集群调度器选择合适节点

这个pod进行运行

选择好节点之后

这个数据同步apiserver

并且记录etcd数据

这个调度的过程叫做绑定

第一个过程用户指令过程

二个过程pod调度过程

两个过程分开执行

两个过程结束之后pod还是没有创建

之前两个过程都是管理控制节点master运行

master执行调度绑定之后

计算节点

被绑定的计算节点的kubelet通过watch机制发现集群

绑定到这个节点上,尚未创建pod

kubelet自己不会创建容器

kubeletruntime软件,比如containerd

runtime软件负责

按照kubelet要求pod创建出来

创建之后

结果反馈kubelet

kubelet结果反馈apiserver

最终结果写入数据库中。

pod的创建,总共三个过程

第一个用户交互过程

第二个调度过程

第三个创建过程

所以kubectl get 命令查询

并不是实际节点进行查询

而是查询etcd数据库中pod状态。

至于pod实际状态

kubelet更新数据库的。

pod创建过程经历不同状态

pending--->containercreating--->running/failed--->completed--->terminating

等待调度--> 容器创建中--->运行中/失败--->完成--->关闭中

第一个pending,是一个等待调度过程

第二个scheduler进行调度调度之后

pod进入一个中间状态containercreating

第三个runnningfailed其中一种就是创建失败还是成功

如果成功创建pod一段时间还会重试重新运行

尝试pod成功运行

任务执行成功之后进入completed状态

这是pod各种状态相位

failed0退出

unknown 无法获取pod状态大多数由于网络不通或者防火墙屏蔽

了解这些有助于pod管理

-----------------------------------------------------------------------------------

namespace也是一种api资源

kube-system系统名称空间

eventsdescribe里面主要用途排错

get外观

describepod

logs容器

排错三兄弟系统重要

]# kubectl exec -it  myweb -- ls  
# 其中"--"  选项终止符这个不是k8s里面东西shell东西
]# ls --help  | grep --time
# 这个里面"--time"没有当成grep参数而被当成grep选项
]# ls --help  | grep --  --time
# 加上选项终止符"--" , 就是告诉grep后面内容不是选项参数

]# kubectl exec -it  myweb -- ls
index.html  info.php
]# kubectl exec -it  myweb  ls
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
index.html  info.php
# k8s告诉管理员pod后面命令 -- [COMMAND]

“--”选项终止符作用解决复杂命令之间选项参数分割问题

pod监控自己容器

如果容器故障自动restart容器

控制器可以跨节点搬运服务如果节点故障

控制器自动服务搬到其他节点运行

exec主要用于容器运行命令       

有时候通过日志搞不定容器里面

cp 文件目录拷贝容器,也可以从容器拷贝宿主机

]# kubectl cp  myweb:/var/www  ./www
tar: Removing leading `/' from member names

dockercp本机复制

k8scp跨主机复制

k8s拷贝数据条带化打包tar是个条带化数据按照条带化方式

数据过来过来东西就是tar本地做了一个解包操作

所以k8scptar实现

cp还有一个功能重定向

]# tar  -cf  -  www
#  这里面"-"  代表标准输入和标准输出
]# tar  -cf  -  www  |gzip  >a.tar.gz

重定向可以实现跨主机重定向

可以A机器重定向B机器。

相关文章:

  • Spring Boot助力:小徐影院管理系统
  • 第九届人工智能创新国际会议(ICIAI 2025)即将在新加坡召开!
  • Maven超详细教程(三):Maven依赖查找顺序
  • Error: one input ui-file must be specified(问题已解决)
  • OceanBase 关于一号表笔记与ERROR 1060(42S21)问题
  • 看Threejs好玩示例,学习创新与技术(React-three-fiber)
  • 【LLM多模态】视频理解模型Cogvlm-video和MVBench评测基准
  • 在新ARM板上移植U-Boot和Linux指南
  • 空间计算/XR的现状:Meta Orion的优势与挑战
  • pgsql
  • 前端——js函数+DOM对象
  • 《 C++ 修炼全景指南:十三 》为什么你的代码不够快?全面掌控 unordered_set 和 unordered_map 的哈希性能飙升魔法
  • 基于Hive和Hadoop的白酒分析系统
  • 大模型微调方法(非常详细),收藏这一篇就够了!
  • 个人健康管理小程序(源码+参考文档+定制)
  • Consul Config 使用Git做版本控制的实现
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Facebook AccountKit 接入的坑点
  • gitlab-ci配置详解(一)
  • HTTP 简介
  • Java读取Properties文件的六种方法
  • Map集合、散列表、红黑树介绍
  • redis学习笔记(三):列表、集合、有序集合
  • SQLServer之创建显式事务
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 代理模式
  • 当SetTimeout遇到了字符串
  • 聊聊flink的TableFactory
  • 聊聊redis的数据结构的应用
  • 前端技术周刊 2019-02-11 Serverless
  • 悄悄地说一个bug
  • 驱动程序原理
  • 如何进阶一名有竞争力的程序员?
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用parted解决大于2T的磁盘分区
  • 通过git安装npm私有模块
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 我这样减少了26.5M Java内存!
  • 学习笔记TF060:图像语音结合,看图说话
  • 怎样选择前端框架
  • hi-nginx-1.3.4编译安装
  • ​马来语翻译中文去哪比较好?
  • # .NET Framework中使用命名管道进行进程间通信
  • $$$$GB2312-80区位编码表$$$$
  • (152)时序收敛--->(02)时序收敛二
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)共用体union的用法举例
  • (C语言)字符分类函数
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (三) diretfbrc详解
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .bat批处理(一):@echo off
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复