And*_*ume 37 kubernetes kubectl
如何使用kubectlAPI或API来检索pod或部署中容器的当前映像?
例如,在使用以下配置创建的部署中,我想要检索该值eu.gcr.io/test0/brain:latest.
apiVersion: v1
kind: Deployment
metadata:
name: flags
spec:
replicas: 6
template:
metadata:
labels:
app: flags
spec:
containers:
- name: flags
image: eu.gcr.io/test0/brain:latest
Run Code Online (Sandbox Code Playgroud)
Dan*_*rez 34
从kubectl1.6开始,-o wide选项就是这样做的
kubectl get deployments -o wide
Run Code Online (Sandbox Code Playgroud)
将在输出中显示当前图像.
Pix*_*ant 27
您可以使用kubectl的jsonpath输出选项来实现此目的:
kubectl get deployment flags -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
Run Code Online (Sandbox Code Playgroud)
以获得所有pod的图像uri(例如,在所有命名空间中):
kubectl get pods --all-namespaces -o jsonpath="{..image}"
(有关更多详细信息,请参见https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/)
以下对我有用:
kubectl get deployment -o=jsonpath='{$.items[:1].spec.template.spec.containers[:1].image}'
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我的部署配置明显不同(开头有“items”元素)。
更新:如果只是执行以下操作,则会出现“items”元素(这只是部署元素的列表):
kubectl get deployment -o=json
Run Code Online (Sandbox Code Playgroud)
而如果我指定部署名称,则返回的 json 中不会有 items 元素,例如:
kubectl get deployment [deploymentName] -o=json
Run Code Online (Sandbox Code Playgroud)
您可以在列表中列出所有部署的图像标记:
kubectl get deployment -o=jsonpath="{range .items[*]}{'\n'}{.metadata.name}{':\t'}{range .spec.template.spec.containers[*]}{.image}{', '}{end}{
end}"
Run Code Online (Sandbox Code Playgroud)
样本输出:
deployment-a: docker-registry.com/group/image-a:v1,
deployment-b: docker-registry.com/group/image-b:v2,
deployment-c: docker-registry.com/group/image-c:v3,
deployment-d: docker-registry.com/group/image-d:v4,
Run Code Online (Sandbox Code Playgroud)
对于单个部署,请使用:
kubectl get deploy/deployment-name -o jsonpath="{..image}"
Run Code Online (Sandbox Code Playgroud)
它也适用于 pod
kubectl get pod/pod-name -o jsonpath="{..image}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15568 次 |
| 最近记录: |