kubernetes - 如何忽略部署文件中的随机 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 名称中的随机值?
解决方案
不是真的,除非您创建 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 的其他一些示例。
推荐阅读
- javascript - 在 Javascript 烧瓶模板中处理 Python 字典时遇到问题
- apache-beam - 运行 Apache Beam Python SplittableDoFn 时出错
- javascript - 在点击 url 提示时使用 app Html 网页打开
- encoding - 将 GStreamer 管道编码和复用到 MPEG-TS
- python - 如何打开和显示来自 github 存储库的图像
- c# - 无法从传输连接读取数据:现有连接被远程主机强行关闭
- javascript - 如何使用 JavaScript 获取 id 属性的名称?
- r - extract_table 函数导致 R 崩溃
- c++ - 从容器上的 lambda 调用推断模板类型
- ios - SWIFT:将 Firebase 信息映射到对象时,一旦返回,对象就不会被添加到数组中,为什么?