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

k8s 小技巧: 查看 Pod 上运行的容器

目录

  • 1. 示例 Pod 的定义文件
  • 2. kubectl describe pod(推荐)
  • 3. kubectl get pod
    • 3.1 json 格式
    • 3.2 yaml 格式
  • 4. 其他操作

1. 示例 Pod 的定义文件

# 文章中所用 pod 的 yaml 定义文件, multi-container.yaml
apiVersion: v1
kind: Pod
metadata:name: multi-containernamespace: sre
spec:containers:- name: nginx-appimage: nginximagePullPolicy: IfNotPresent # 如果存在则不拉取镜像- name: redis-appimage: redisimagePullPolicy: IfNotPresent
kubectl apply -f multi-container.yaml# 查看是否运行成功 
kubectl get pods -n sre# 输出如下
NAME                                         READY   STATUS    RESTARTS   AGE
multi-container                              2/2     Running   0          8m48s

要使用 kubectl 获取某个 Pod 中的容器信息,可以使用以下几种方法:

2. kubectl describe pod(推荐)

kubectl describe pod 命令可以提供有关 Pod 及其容器的详细信息,包括容器名称、镜像、状态等。

示例:

kubectl describe pod <pod_name> -n <namespace>
  • -n:指定命名空间,如果不指定则默认为 default 命名空间。

例如上面的 multi-container

kubectl describe pod multi-container -n sre

该命令输出中会包括容器的信息,如名称、镜像、状态、资源请求和限制等;在 Containers 就可以看到这个 Pod 中包含的容器名。

Name:         multi-container
Namespace:    sre
Priority:     0
Node:         node9/192.168.1.37
Start Time:   Tue, 11 Jun 2024 15:52:07 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/podIP: 10.100.104.116/32cni.projectcalico.org/podIPs: 10.100.104.116/32
Status:       Running
Containers: # 包含的容器nginx-app: # 容器名Container ID:   docker://xxxxxImage:          nginxImage ID:       xxxxxxPort:           <none>redis-app: # 容器名Container ID:   docker://xxxxxImage:          redisImage ID:       xxxxxxxPort:           <none>
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True 
...

3. kubectl get pod

使用 kubectl get pod 命令并结合 -o json-o yaml 输出格式,可以查看 Pod 的详细 JSONYAML 描述。

3.1 json 格式

# 输出到控制台
kubectl get pod <pod_name> -n <namespace> -o json# 输出到文件中
kubectl get pod <pod_name> -n <namespace> -o json > test.json

例如输出到文件中:

kubectl get pod multi-container -n sre -o json > test.json

然后在文件中找到层级 spec -> containers 就可以看到运行的容器:

{// ..."spec": {"containers": [ // 包含的容器{"image": "nginx","imagePullPolicy": "IfNotPresent","name": "nginx-app", // 容器名"resources": {},},{"image": "redis","imagePullPolicy": "IfNotPresent","name": "redis-app", // 容器名"resources": {},}]}// ...
}

👍 小知识

可以通过 jq 工具来解析 JSON 输出:

# 需要先安装 jq 工具# 安装完成后执行下面的命令
kubectl get pod multi-container -n sre -o json | jq '.spec.containers[].name'
  • jq 是一个轻量级且灵活的命令行 JSON 处理工具,用于在 Linux(和其他类 Unix 系统)中解析、筛选、转换、生成和操作 JSON 数据。jq 相当于命令 sedawk,但专门用于处理 JSON 格式的数据。

3.2 yaml 格式

# 输出到控制台
kubectl get pod <pod_name> -n <namespace> -o yaml# 输出到文件中
kubectl get pod <pod_name> -n <namespace> -o yaml > test.yaml

例如输出到文件中:

kubectl get pod multi-container -n sre -o yaml > test.yaml

然后在文件中找到层级 spec -> containers 就可以看到运行的容器:

# ...
spec:containers: # 包含的容器- image: nginximagePullPolicy: IfNotPresentname: nginx-app  # 容器名resources: {}- image: redisimagePullPolicy: IfNotPresentname: redis-app # 容器名resources: {}
# ...

4. 其他操作

获取容器之后就可以进行其他操作了:

  • 查看指定容器日志
kubectl logs <Pod-Name> -c <Container-Name>
  • 进入执行容器并执行命令
kubectl exec -it <Pod-Name> -n <Namespaces> -c <Container-Name> bash
  • more…

相关文章:

  • windows常见问题
  • Python重力弹弓流体晃动微分方程模型和交直流电阻电容电路
  • ubuntu开机怎么进入、退出命令行界面
  • 高效BUG管理:定级、分类和处理流程
  • 【SQL】drop、delete 与 truncate 的区别
  • Excel中插入的图片在不同电脑上消失的问题及解决方法
  • 裁员裁到大动脉,是一种什么体验!
  • Spring (68)如何管理Spring Boot应用的配置
  • 【云岚到家】-day04-1-数据同步方案-Canal-MQ
  • 【C++题解】1713 - 输出满足条件的整数3
  • IP地址介绍
  • java 接口的
  • Hi3861 OpenHarmony嵌入式应用入门--总引导连接
  • 剖析影响大米码垛机性能的关键因素
  • EXCEL数据导入HIVE
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vuex 学习笔记 01
  • webgl (原生)基础入门指南【一】
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 跨域
  • 嵌入式文件系统
  • 如何合理的规划jvm性能调优
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 小试R空间处理新库sf
  • 责任链模式的两种实现
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​Java并发新构件之Exchanger
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #单片机(TB6600驱动42步进电机)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (11)MSP430F5529 定时器B
  • (2)MFC+openGL单文档框架glFrame
  • (27)4.8 习题课
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Java)【深基9.例1】选举学生会
  • (javascript)再说document.body.scrollTop的使用问题
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (备忘)Java Map 遍历
  • (蓝桥杯每日一题)love
  • (转)ABI是什么
  • (转)h264中avc和flv数据的解析
  • .Net - 类的介绍
  • .net core Redis 使用有序集合实现延迟队列
  • .net 按比例显示图片的缩略图
  • .net和php怎么连接,php和apache之间如何连接
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .sh 的运行
  • @EventListener注解使用说明
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Angular] 笔记 7:模块
  • [bzoj1038][ZJOI2008]瞭望塔
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行