下面是我的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名称中的随机值?
答案 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}'
答案 1 :(得分:1)
首先,您要实现哪种用例?如果您只想获取属于特定部署的可用Pod,则可以使用label和选择器。例如:
kubectl -n <namespace> get po -l <key>=<value>