首页 > 解决方案 > 如何忽略部署文件中的随机 kubernetes pod 名称

问题描述

以下是我的 kubernetes 部署文件 -

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: boxfusenew
  labels:
    app: boxfusenew
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: boxfusenew
    spec:
      containers:
      - image: sk1997/boxfuse:latest
        name: boxfusenew
        ports:
        - containerPort: 8080

在此部署文件中,容器标签boxfusenew下指定了 pod 名称。所以我希望部署文件生成的 pod 应该具有boxfusenew名称,但部署会为其附加一些随机值as-boxfusenew-5f6f67fc5-kmb7z

是否可以通过部署文件忽略 pod 名称中的随机值?

标签: kubernetes

解决方案


不是真的,除非您创建 Pod 本身而不是部署。

根据 Kubernetes文档

集群中的每个对象都有一个对该类型资源唯一的名称。每个 Kubernetes 对象还有一个在整个集群中唯一的 UID。

例如,在同一个命名空间中只能有一个名为 myapp-1234 的 Pod,但可以有一个 Pod 和一个 Deployment,每个都命名为 myapp-1234。

对于非唯一的用户提供的属性,Kubernetes 提供标签和注释。

如果你创建一个带有特定唯一标签的 Pod,你可以使用这个标签来查询 Pod,所以不需要确切的名称。

您可以使用 jsonpath 从您的 Pod 在该特定部署下查询您想要的值。我创建了一个示例,可能会给您一个想法:

kubectl get pods -o=jsonpath='{.items[?(@.metadata.labels.app=="boxfusenew")].metadata.name}'

这将返回包含标签的 Pod 的名称app=boxfusenew您可以在此处此处查看jsonpath 的其他一些示例。


推荐阅读