如何忽略部署文件中的随机Kubernetes Pod名称

时间:2020-04-15 05:14:07

标签: kubernetes

下面是我的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应该具有 boxfusenew 名称,但是部署会将一些随机值附加到它上- boxfusenew-5f6f67fc5-kmb7z

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

2 个答案:

答案 0 :(得分:3)

并非如此,除非您自己创建Pod而非部署。

根据Kubernetes documentation

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

例如,在同一个名称空间中只能有一个名为myapp-1234的Pod,但是您可以有一个分别名为myapp-1234的Pod和一个Deployment。

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

如果您使用特定的唯一标签创建Pod,则可以使用此标签查询Pod,因此不需要确切的名称。

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

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

这将返回包含标签app=boxfusenew的Pod的名称。您可以看看jsonpath herehere的其他示例。

答案 1 :(得分:1)

首先,您要实现哪种用例?如果您只想获取属于特定部署的可用Pod,则可以使用label和选择器。例如:

kubectl -n <namespace> get po -l <key>=<value>