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

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,是一个等待调度过程

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

pod进入一个中间状态createcontainer

第三个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机器。


http://www.kler.cn/a/318180.html

相关文章:

  • 容器技术所涉及Linux内核关键技术
  • Mysql高级部分总结(二)
  • 一个比RTK或redux更轻量级更易使用的 React 第三方状态管理工具库的配置与使用
  • 苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
  • 安卓从Excel文件导入数据到SQLite数据库的实现
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(3)
  • Allegro视频去除走线的小方块
  • Milvus - 四种一致性级别与应用场景解析
  • 可靠传输是什么?是基于UDP实现的吗
  • JUC并发编程_四大函数式接口和 Stream 流式计算
  • 适用于 Windows 的 7 大数据恢复工具,可靠的数据恢复工具可有效地恢复丢失的文件
  • 后端开发工程师转行大模型领域:全面学习路线指南,非常详细收藏我这一篇就够了
  • 【大语言模型_1】VLLM部署Qwen模型
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • 2-102基于matlab的蒙特卡洛仿真
  • C语言——文件操作
  • [数据结构]动态顺序表的实现与应用
  • 第二证券:“产业+科技” 中国并购重组市场持续升温
  • 【微服务即时通讯系统】——etcd一致性键值存储系统,etcd的介绍,etcd的安装,etcd使用和功能测试
  • Scikit-learn 识别手写数字
  • Qt:NULL与nullptr的区别(手写nullptr)
  • 数据处理与统计分析篇-day10-Matplotlib数据可视化
  • Leetcode 每日一题:Diameter of Binary Tree
  • DataWhale X 南瓜书学习笔记 task03笔记
  • vue3+Element-plus el-input 输入框组件二次封装(支持金额、整数、电话、小数、身份证、小数点位数控制,金额显示中文提示等功能)
  • rust属性宏