【问题标题】:Add random string on Kubernetes pod deployment name在 Kubernetes pod 部署名称上添加随机字符串
【发布时间】:2023-03-16 20:10:01
【问题描述】:

我有一个模板,它基本上是一个实用容器,用于在 pod 中运行 kubectl。

我想做的是能够对同一个模板进行多个部署,但名称不同,如“utilitypod-randomID”。

有没有办法通过 kubectl 和一些 shell 脚本或类似的东西来做到这一点?

当前模板如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: utilitypod
  namespace: blah-dev
labels:
  purpose: utility-pod
spec:
  containers:
  - name: utilitypod
  image: blahblah/utilitypod:latest
  command: [ "/bin/bash", "-c", "--" ]
  args: [ "while true; do sleep 28800; done;" ]
  env: 
  - name: KUBERNETES_SERVICE_HOST
    value: "api.dev.blah.internal"
  - name: KUBERNETES_SERVICE_PORT
    value: "443"

【问题讨论】:

  • 另外,虽然答案解决了您的实际问题,但我认为您应该查看部署资源而不是处理裸 pod
  • 在使用 Pod yaml 文件时遇到了同样的问题,并按照@LevKuznetsov 的建议在部署 yaml 中包含详细信息。

标签: kubernetes kubectl


【解决方案1】:

您可以将name 替换为generateName,这会添加一个随机后缀。您的模板将如下所示:

apiVersion: v1
kind: Pod
metadata:
  generateName: utilitypod-
  namespace: blah-dev
  labels:
    purpose: utility-pod
spec:
  containers:
    - name: utilitypod
      image: blahblah/utilitypod:latest
      command: [ "/bin/bash", "-c", "--" ]
      args: [ "while true; do sleep 28800; done;" ]
      env:
        - name: KUBERNETES_SERVICE_HOST
          value: "api.dev.blah.internal"
        - name: KUBERNETES_SERVICE_PORT
          value: "443"

请注意,这仅适用于 kubectl create -f template.yaml,不适用于 apply,因为 apply 按名称查找资源并尝试比较它们的定义,但此模板不包含特定名称。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2023-02-17
    • 1970-01-01
    • 2019-11-27
    • 2011-09-16
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多