在Kubernetes pod部署名称上添加随机字符串

问题描述 投票:2回答:2

我有一个模板,它基本上是一个实用程序容器,用于在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"
kubernetes kubectl
2个回答
10
投票

你可以用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通过其名称查找资源并尝试比较它们的定义,但此模板不包含特定名称。


0
投票

由于我想使用它作为某种自动方式快速生成pod和shell,并且能够让多人使用它,我最终创建了一个使用json的powershell脚本:

$randomnumber = Get-Random
$file = ".\temp\utility.$randomnumber.json"
$json = '{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
      "name": "utilitypod-' + $randomnumber + '",
      "namespace": "blahblah-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.blahblah.internal"
            },
            {
              "name": "KUBERNETES_SERVICE_PORT",
              "value": "443"
            }
          ]
        }
      ]
    }
  }' | Out-File $file

Write-Host "Deploying utilty pod, hang on..."
kubectl apply -f $file
Write-Host "Waiting 15 seconds for the pod be deployed"
start-sleep -s 15
kubectl exec -it "utilitypod-$randomnumber" -n blahblah-dev -- /bin/bash
Write-Host "Asking for pod to be deleted"
kubectl delete -f $file
start-sleep -s 1
© www.soinside.com 2019 - 2024. All rights reserved.