K8S Pod 和 Container常用命令与用法
根据最佳实践,您应该始终尝试每个 Pod 有一个容器,这是最常见的 Kubernetes 用例。然而,一个 Pod 可以包含多个容器,其主要原因是支持辅助主应用程序的辅助应用程序。
下面简洁明了的介绍如何使用kubectl命令获取 Pod Container,以及如何获取日志和登录Pod Container。
列出Pod
使用以下命令之一获取 Pod 并找出您要列出的容器的名称:
$ kubectl get pods
$ kubectl get pods --all-namespaces
$ kubectl get pods --namespace <namespaceName>
- sample output -
NAME READY STATUS RESTARTS AGE
runner-ctrl-71c8ff88-bc9pq 2/2 Running 0 5m5s
列出所有Container
$ kubectl describe pod <podName>
- example -
$ kubectl describe pod runner-ctrl-71c8ff88-bc9pq
- sample output -
...
Containers:
runner: ←
Container ID: ...
Image: ...
...
proxy: ←
Container ID: ...
Image: ...
...
...
列出单个Pod内的Container
$ kubectl get pod <podName> -o jsonpath='{.spec.containers[*].name}'
- example -
$ kubectl get pod runner-ctrl-71c8ff88-bc9pq -o jsonpath='{.spec.containers[*].name}'
- sample output -
runner ← proxy ←
获取 Pod 容器日志
如果知道 Pod 内运行的容器的名称,则可以检查特定容器的日志:
$ kubectl logs pod/<podName> -c <containerName>
- example -
$ kubectl logs pod/runner-ctrl-71c8ff88-bc9pq -c runner
登录 Pod 容器
可以登录到特定容器并使用以下命令在其中启动 shell 会话:
$ kubectl exec -it <podName> -c <containerName> -- /bin/bash
$ kubectl exec -it <podName> -c <containerName> -- /bin/sh
- example -
$ kubectl exec -it runner-ctrl-71c8ff88-bc9pq -c runner -- /bin/sh