kubernetes - 使用 terraform 在 kubernetes 上计划重启
问题描述
我在由 terraform 管理的 aws 上运行 kubernetes 集群。我想定期(可能每周)自动重启集群中的 Pod。由于整个集群由 terraform 管理,我也想通过 terraform 运行自动重启命令。
起初我认为 kubernetes 会为其 pod 提供某种 ttl,但事实似乎并非如此。
在 SO 的其他地方,我看到了使用由 kubernetes 管理的 cron 作业运行自动重启的能力(例如:如何安排 pods restart)。Terraform 有一个相关资源——kubernetes_cron_job——但我无法完全理解如何使用实际运行所需的权限来设置它。
将不胜感激一些反馈!
以下是我尝试过的:
resource "kubernetes_cron_job" "deployment_restart" {
metadata {
name = "deployment-restart"
}
spec {
concurrency_policy = "Forbid"
schedule = "0 8 * * *"
starting_deadline_seconds = 10
successful_jobs_history_limit = 10
job_template {
metadata {}
spec {
backoff_limit = 2
active_deadline_seconds = 600
template {
metadata {}
spec {
service_account_name = var.service_account.name
container {
name = "kubectl"
image = "bitnami/kubectl"
command = ["kubectl rollout restart deploy"]
}
}
}
}
}
}
}
resource "kubernetes_role" "deployment_restart" {
metadata {
name = "deployment-restart"
}
rule {
api_groups = ["apps", "extensions"]
resources = ["deployments"]
verbs = ["get", "list", "patch", "watch"]
}
}
resource "kubernetes_role_binding" "deployment_restart" {
metadata {
name = "deployment-restart"
}
role_ref {
api_group = "rbac.authorization.k8s.io"
kind = "Role"
name = kubernetes_role.deployment_restart.metadata[0].name
}
subject {
kind = "ServiceAccount"
name = var.service_account.name
api_group = "rbac.authorization.k8s.io"
}
}
这是基于使用 terraform 在 k8s 集群中授予 RBAC 角色和如何安排 pod 重启的组合。
当前收到以下错误:
Error: RoleBinding.rbac.authorization.k8s.io "deployment-restart" is invalid: subjects[0].apiGroup: Unsupported value: "rbac.authorization.k8s.io": supported values: ""
解决方案
根据rolebinding.subjects.apiGroup
服务帐户的官方文档应该是空的。
kubectl explain rolebinding.subjects.apiGroup
种类:角色绑定版本:rbac.authorization.k8s.io/v1
字段:apiGroup
描述:APIGroup 保存引用主题的 API 组。ServiceAccount 主题默认为“”。用户和组主题默认为“rbac.authorization.k8s.io”。
推荐阅读
- python - 使用 OpenCV 对 pytesseract OCR 进行图像预处理
- python - 子集根据他们的标签
- python - 如何使用 Django 和 Pandas 将 excel 文件返回给用户
- asp.net - ASP.NET 根据 URL 改变布局
- pandas - 熊猫四舍五入
- angular - 角度 10 翻译字符串 ID 不匹配
- c++ - 带有扩展类的 c++ 读取访问冲突
- r - 在R表中排序和打印最大值和关联的行名
- android - 使用 Theme.MaterialComponents.Light.DarkActionBar 后缺少菜单栏
- python-3.x - 是否有将字符串拆分为单个字符的方法?(Python)