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

03_pod详解

03_pod详解

pod是什么

pod是kubernetes创建或部署的最小单位,一个pod封装一个或者多个容器(container),存储资源volume一个独立的网络ip以及管理容器运行方式的策略选项

pod使用的两种方式

  • pod中运行一个容器,可视为pod封装单个容器。
  • kubernetes是直接管理pod而不是容器,pod是k8s最小的单位
  • pod中运行多个耦合在一起工作,需要共享资源的容器,通常情况下一个主容器和几个辅助容器。
  • 一个web服务容器,从固定一个目录对外提供文件服务,而辅助容器周期性的从外部下载文件存到这个固定目录下

在这里插入图片描述

创建Pod

kubernetes中资源可以使用YAML描述(如果您对YAML格式不了解,可以参考YAML语法),也可以使用JSON

https://support.huaweicloud.com/devg-cci/cci_05_1001.html

如下示例描述了一个名为nginx的Pod,这个Pod中包含一个名为container-0的容器,使用nginx:alpine镜像,使用的资源为100m core CPU、200Mi内存。

apiVersion: v1                      # Kubernetes的API Version
kind: Pod                           # Kubernetes的资源类型
metadata:name: nginx                       # Pod的名称
spec:                               # Pod的具体规格(specification)containers:- image: nginx:alpine             # 使用的镜像为 nginx:alpinename: container-0               # 容器的名称resources:                      # 申请容器所需的资源limits:cpu: 100mmemory: 200Mirequests:cpu: 100mmemory: 200Mi#imagePullSecrets:                 # 拉取镜像使用的证书,在CCE上必须为default-secret# - name: default-secret

如上面YAML的注释,YAML描述文件主要为如下部分:

  • metadata:一些名称/标签/namespace等信息。
  • spec:Pod实际的配置信息,包括使用什么镜像,volume等。

如果去查询Kubernetes的资源,您会看到还有一个status字段,status描述kubernetes资源的实际状态,创建时不需要配置。这个示例是一个最小集,其他参数定义后面会逐步介绍。

Pod定义好后就可以使用kubectl创建,如果上面YAML文件名称为nginx.yaml,则创建命令如下所示,-f表示使用文件方式创建。

pod状态查看

可以看到此处nginx这个Pod的状态为Running,表示正在运行;READY为1/1,表示这个Pod中有1个容器,其中1个容器的状态为Ready。

可以使用kubectl get命令查询具体Pod的配置信息,如下所示,-o yaml表示以YAML格式返回,还可以使用-o json,以JSON格式返回。

$ kubectl get pod nginx -o yaml
$ kubectl get pod nginx -o json

pod详情查看

[root@k8s-master-10 ~]#kubectl describe pod nginx常用来查看资源创建事件
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  92s   default-scheduler  Successfully assigned default/nginx to k8s-node-12Normal  Pulled     92s   kubelet            Container image "nginx:alpine" already present on machineNormal  Created    92s   kubelet            Created container container-0Normal  Started    92s   kubelet            Started container container-0

删除pod时,Kubernetes终止Pod中所有容器。 Kubernetes向进程发送SIGTERM信号并等待一定的秒数(默认为30)让容器正常关闭。

如果它没有在这个时间内关闭,Kubernetes会发送一个SIGKILL信号杀死该进程。

pod停止删除

Pod的停止与删除有多种方法,比如按名称删除,如下所示。

一次性删除多个pod。

[root@k8s-master-10 ~]#kubectl delete pod nginx yuchao-nginx
pod "nginx" deleted
pod "yuchao-nginx" deleted

清理当前namespace下所有的pod,默认就是default

[root@k8s-master-10 ~]#kubectl describe pod dep-nginx-779c7fd666-cvg8v |grep -i ^namespace
Namespace:    default# --all参数,危险命令!
[root@k8s-master-10 ~]#kubectl delete pod --all
pod "dep-nginx-779c7fd666-cvg8v" deleted

标签选择器删除pod

kubectl delete pod -l name=www.yuchaoit.cn

容器的启动命令

容器就是启动主进程,但有些时候需要做一些准备工作

比如MySQL类的数据库,可能需要一些数据库配置、初始化的工作,这些工作要在最终的MySQL服务器运行之前做完。

这些操作,可以在制作镜像时通过在Dockerfile文件中设置ENTRYPOINT或CMD来完成,如下所示的Dockerfile中设置了**ENTRYPOINT [“curl”, “yzk.yzkik.xyz”]**命令,其将会在容器启动时执行。

实际使用时,只需配置Pod的containers.command参数,该参数是list类型,第一个参数为执行命令,后面均为命令的参数。

apiVersion: v1
kind: Pod
metadata:name: mynginxnamespace: chaoge-linux # 单独开一个ns环境
spec:containers:- image: nginx:alpinename: container-0resources:limits:cpu: 100mmemory: 200Mirequests:cpu: 100mmemory: 200Micommand:                     # 启动命令- curl- "www.yuchaoit.cn"# imagePullSecrets:# - name: default-secret

创建namespace下的pod

[root@k8s-master-10 ~]#kubectl create ns chaoge-linux
namespace/chaoge-linux created[root@k8s-master-10 ~]#kubectl create -f cmd-pod.yaml 
pod/mynginx created
[root@k8s-master-10 ~]#

查看ns下的pod

[root@k8s-master-10 ~]#kubectl get pods -n chaoge-linux 
NAME      READY   STATUS             RESTARTS   AGE
mynginx   0/1     CrashLoopBackOff   4          2m12s
[root@k8s-master-10 ~]#发现咋挂了?

查看pod事件

Events:Type     Reason     Age                   From               Message----     ------     ----                  ----               -------Normal   Scheduled  2m37s                 default-scheduler  Successfully assigned chaoge-linux/mynginx to k8s-node-12Normal   Pulled     61s (x5 over 2m37s)   kubelet            Container image "nginx:alpine" already present on machineNormal   Created    61s (x5 over 2m37s)   kubelet            Created container container-0Normal   Started    61s (x5 over 2m36s)   kubelet            Started container container-0Warning  BackOff    60s (x10 over 2m35s)  kubelet            Back-off restarting failed container[root@k8s-master-10 ~]#kubectl describe pod mynginx -n chaoge-linux

查看pod日志

[root@k8s-master-10 ~]#kubectl -n chaoge-linux logs mynginx |grep 
[root@k8s-master-10 ~]## 因为我们修改了容器启动执行命令,并非是启动nginx了,删除该pod即可。[root@k8s-master-10 ~]#kubectl -n chaoge-linux delete pod mynginx 
pod "mynginx" deleted
http://www.dtcms.com/a/473489.html

相关文章:

  • 线性代数 | excellent algebraic space
  • 计算机网络篇之TCP滑动窗口
  • java项目使用宝塔面板部署服务器nginx不能反向代理找到图片资源
  • 180课时吃透Go语言游戏后端开发11:Go语言中的并发编程
  • 江苏建设部官方网站纯 flash 网站
  • Oracle OMF 配置文档
  • 帮别人做网站怎么赚钱wordpress 静态设置
  • SpringBoot Jar包冲突在线检测
  • 基于OpenCV的通过人脸对年龄、性别、表情与疲劳进行检测
  • vue3 类似 Word 修订模式,变更(插入、删除、修改)可以实时查看标记 如何实现
  • LLM 笔记 —— 07 Tokenizers(BPE、WordPeice、SentencePiece、Unigram)
  • Serverless数据库架构:FaunaDB+Vercel无缝集成方案
  • 【自然语言处理】“bert-base-chinese”的基本用法及实战案例
  • LLM 笔记 —— 08 Embeddings(One-hot、Word、Word2Vec、Glove、FastText)
  • 广告公司网站设计策划phpcmsv9手机网站
  • 【Qt】乌班图安装Qt环境
  • 边缘计算中的前后端数据同步:Serverless函数与Web Worker的异构处理
  • Windows Pad平板对 Qt 的支持
  • 基于JETSON ORIN/RK3588+AI相机:机器人-多路视觉边缘计算方案
  • 没有网怎么安装wordpress沈阳企业网站优化排名方案
  • 【C++STL :list类 (二) 】list vs vector:终极对决与迭代器深度解析 揭秘list迭代器的陷阱与精髓
  • 虚幻引擎入门教程:虚幻引擎的安装
  • FastbuildAI后端服务启动流程分析
  • AI×Cursor 零基础前端学习路径:避误区学HTML/CSS/JS
  • 新手小白——Oracle数据库.索引与数据完整性
  • 免费注册网站软件网站制作 东莞
  • Redis 的璀璨明珠:深入剖析有序集合 (ZSET) 的奥秘与艺术
  • 【Linux网络编程】多路转接reactor——ET模式的epoll
  • 深入理解线程池:核心处理流程与工作原理
  • 关于unity一个场景中存在多个相机时Game视图的画面问题