0


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

目录

1. 示例 Pod 的定义文件

# 文章中所用 pod 的 yaml 定义文件, multi-container.yamlapiVersion: v1
kind: Pod
metadata:name: multi-container
  namespace: sre
spec:containers:-name: nginx-app
      image: nginx
      imagePullPolicy: IfNotPresent # 如果存在则不拉取镜像-name: redis-app
      image: redis
      imagePullPolicy: 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:0Node:         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/32
              cni.projectcalico.org/podIPs: 10.100.104.116/32
Status:       Running
Containers:# 包含的容器nginx-app:# 容器名Container ID:   docker://xxxxx
    Image:          nginx
    Image ID:       xxxxxx
    Port:           <none>redis-app:# 容器名Container ID:   docker://xxxxx
    Image:          redis
    Image ID:       xxxxxxx
    Port:           <none>Conditions:
    Type              Status
    Initialized       True 
    Ready             True 
    ContainersReady   True 
    PodScheduled      True 
...

3. kubectl get pod

使用

kubectl get pod

命令并结合

-o json

-o yaml

输出格式,可以查看

Pod

的详细

JSON

YAML

描述。

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: nginx
    imagePullPolicy: IfNotPresent
    name: nginx-app  # 容器名resources:{}-image: redis
    imagePullPolicy: IfNotPresent
    name: redis-app # 容器名resources:{}# ...

4. 其他操作

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

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

本文转载自: https://blog.csdn.net/peng2hui1314/article/details/139400001
版权归原作者 Roc.Chang 所有, 如有侵权,请联系我们删除。

“k8s 小技巧: 查看 Pod 上运行的容器”的评论:

还没有评论