在 Kubernetes pod 部署名称上添加随机字符串
Add random string on Kubernetes pod deployment name
我有一个模板,它基本上是 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"
您可以将 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
按名称查找资源并尝试比较它们的定义,但此模板不会'包含特定名称。
我有一个模板,它基本上是 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"
您可以将 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
按名称查找资源并尝试比较它们的定义,但此模板不会'包含特定名称。