比尔萄堡

上帝说: “要有光” 于是,就有了光。


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

migration with k8s

时间: 2021-12-01 分类: 问题排查/k8s   字数: 842 字 阅读: 2分钟 阅读次数:

migration三种方式

主程序开始时执行

存在的弊端: - 多个POD的情况下,migration执行多次 - 主程序最好有权限隔离,避免破坏性更新数据结构

在CI/CD阶段执行

面临的问题:migration仍需要环境;如果使用serverless,等待时间过长

在gitlab runner机器上,/etc/gitlab-runner/config.toml可以看到concurrent,目前我们的是30

结合K8S InitContainer和Job

initContainer在所有其他container运行前启动,可以运行一个k8s-wait-for,等待Job运行完成。

### 最终实践 使用Job,没有用到initContainer,在gitlab runner阶段执行创建Job和等待Job完成

### Job示例

 apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  activeDeadlineSeconds: 100
  backoffLimit: 4
  completions: 10
  parallelism: 2

运行示例:

 kubectl apply -f https://kubernetes.io/examples/controllers/job.yaml

Job Pod Container restartPolicy 只能设置 OnFailure 和 Never。

backoffLimit是重试次数(默认值是6),重试时间会按指数增长 (从 10 秒、20 秒到 40 秒)最多至 6 分钟。 如果你的 Job 的 restartPolicy 被设置为 “OnFailure”,就要注意运行该 Job 的 Pod 会在 Job 到达失效回退次数上限时自动被终止。这会使得调试 Job 中可执行文件的工作变得非常棘手。

activeDeadlineSeconds不是默认属性,优先级比backoffLimit高。

删除Job可以使用 kubectl delete jobs/pi 或者 kubectl delete -f ./job.yaml

ttlSecondsAfterFinished可以自动清理完成的Job,但是在1.21版本之后才可用

挂起Job可以更改.spec.suspend (true/false)

思考题🤔:使用Job而不是一个Pod的原因? 答案

### CronJob

 
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

Cron 表达式中的五个部分分别代表:分钟、小时、日、月、星期

spec.concurrencyPolicy (Allow, Forbid, Replace):由于定时任务的特殊性,很可能某个 Job 还没有执行完,另外一个新 Job 就产生了。这时候,可以通过该字段来定义具体的处理策略。

#k8s# #job# #migration#

标题:migration with k8s

作者:训导主任林作栋

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

POD经常被驱逐
数据库查看表大小
训导主任林作栋

训导主任林作栋

戏谑的码农,北野武的拥趸,李安的迷弟,伍佰的Fans

55 日志
23 分类
62 标签
豆瓣
友情链接
  • Obsidian
  • V2EX
  • 关注黑客与极客
  • 廖雪峰
标签云
  • Linux 6
  • K8s 5
  • 数据库 5
  • Golang 4
  • Etcd 3
  • Mysql 3
  • Ai 2
  • Gitlab 2
  • Postgres 2
  • 前端 2
© 2010 - 2024 比尔萄堡
Powered by - Hugo v0.58.2 / Theme by - NexT
/
Storage by Vercel / 刘 ICP 备 18047355 号
0%