kubernetes - Kubernetes 作业每分钟删除一个 pod
问题描述
我想创建一个作业,以每分钟或创建时的任何时间杀死以下 pod。
我的测试吊舱是:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo Hello && sleep 3600']
有可能这样做吗?
解决方案
是的,您可以在集群中使用 kubectl 删除 pod。首先,您需要创建一组 RBAC(基于角色的访问控制)对象。这是示例。
apiVersion: v1
kind: ServiceAccount
metadata:
name: test # this is service account for binding the pod
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test # This defines a role and what API it can access
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["delete", "get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: test # This will bind the role and service account
subjects:
- kind: ServiceAccount
name: test
roleRef:
kind: Role
name: test
apiGroup: rbac.authorization.k8s.io
这些对象将定义适当的 RABC 规则,以便创建的 pod 可以与 Kubernetes 的相应 API 交互。然后,您可以使用这样的 Cronjob 类型定义您的 Job。
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: kill-pod
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
serviceAccountName: test
containers:
- name: kill-pod
image: bitnami/kubectl:latest
command:
- kubectl
args:
- delete
- pod
- sth
restartPolicy: OnFailure
推荐阅读
- google-sheets - Google 表格 YouTube 链接和名称
- javascript - 无法运行 document.execCommand('copy); 在Javascript中
- r - 网页抓取 - 代码适用于一个站点但不适用于另一个站点
- java - 数据库连接数与 Java 线程数
- logging - 使用 WSGI 进行 Zope 日志记录
- django - 如何在 Django 中使用用户的 unique_id 和令牌发送 url?
- mobile - Appium - 在一个会话中自动化多个 Android 应用程序
- javascript - Angularjs rz-slider没有在键盘箭头键上返回值
- php - 使用php在数据库中插入具有自动增量ID的空白行导入excel文件
- node.js - 在 Microsoft BotFramework 的英雄卡中发送本地存储的图像