bash - k8s CronJob 在 pod 列表上循环

标签 bash amazon-web-services azure shell kubernetes

我想在特定命名空间中的 Pod 上运行循环,但诀窍是在 cronJob 中执行此操作,是否可以内联

kubectl get pods -n foo

这里的技巧是在你获得 Pod 列表后,我需要循环并在 15 秒的超时时间内将每个 Pod 删除,是否可以在 cronJob 中执行此操作?

apiVersion: batch/v1
kind: CronJob
metadata:
  name: restart
  namespace: foo
spec:
  concurrencyPolicy: Forbid
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      backoffLimit: 2
      activeDeadlineSeconds: 600
      template:
        spec:
          serviceAccountName: pod-exterminator
          restartPolicy: Never
          containers:
            - name: kubectl
              image: bitnami/kubectl:1.22.3
              command:
                - 'kubectl'
                - 'get'
                - 'pods'
                - '--namespace=foo'

当运行上面的脚本时它可以工作,但是当你想运行循环时它会变得复杂,我怎样才能内联完成它?

最佳答案

在你的情况下,你可以使用这样的东西:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: restart
  namespace: foo
spec:
  concurrencyPolicy: Forbid
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      backoffLimit: 2
      activeDeadlineSeconds: 600
      template:
        spec:
          serviceAccountName: pod-exterminator
          restartPolicy: Never
          containers:
            - name: kubectl
              image: bitnami/kubectl:1.22.3
              command:
              - /bin/sh
              - -c
              - kubectl get pods -o name |  while read -r POD; do kubectl delete "$POD"; sleep 15; done

但是,你真的需要等待15秒吗?如果你想在删除下一个 Pod 之前确保该 Pod 已经消失,可以使用 --wait=true,所以命令将变为:

kubectl get pods -o name |  while read -r POD; do kubectl delete "$POD" --wait; done

关于bash - k8s CronJob 在 pod 列表上循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71148660/

相关文章:

Azure 应用服务证书 - 自动续订失败

c# - Web 应用程序在 Visual Studio 和 Azure 上显示不同的屏幕

linux - 如何在 bash 脚本中排序?

linux - 定义范围的 bash for 循环不起作用

bash - Pig 0.12.0 不会使用反引号执行时区更改的 shell 命令

amazon-web-services - Lambda API 结果作为在 Cloud Formation 中创建 AWS 资源的条件

php - MongoDB 在文件保存时导致 PHP 崩溃,500 错误;可以毫无问题地检索保存的文件

linux - 以下方法有什么问题(rm + xargs)

amazon-web-services - 具有无服务器框架的私有(private) API 网关

azure - 无法更改当前处于消费层的 API 管理的定价层