k8s节点images自动清理

功能介绍

同一个服务,发版本时通过命令行删除旧镜像,但保留最新3个镜像,用以回滚

一行docker命令删除多余镜像

docker images |grep 'command-demo'|awk '{print $3}'|awk 'BEGIN {FS=\" \"} NR > 3 {print $NF}'|xargs docker rmi||true

删除command-demo服务的多余镜像,具体可自定义

***yaml文件增加内容

容器创建执行shell命令:

lifecycle:
  postStart:
      exec:
        command: [ "/bin/sh","-c","docker images |grep 'command-demo'|awk '{print $3}'|awk 'BEGIN {FS=\" \"} NR > 3 {print $NF}'|xargs docker rmi||true" ]

挂载docker到容器,使得容器内可以执行docker命令:

volumes:
  - name: docker
    hostPath:
      path: /usr/bin/docker
  - name: dockersock
    hostPath:
      path: /var/run/docker.sock
volumeMounts:
  - mountPath: /usr/bin/docker
    name: docker
  - mountPath: /var/run/docker.sock
    name: dockersock

容器的生命周期事件: 官网链接
postStart:容器创建后执行
preStop:容器销毁前执行

yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: command-demo
  labels:
    purpose: demonstrate-command
spec:
  containers:
  - name: command-demo-container
    image: command-demo
    lifecycle:
      postStart:
         exec:
           command: [ "/bin/sh","-c","docker images |grep 'command-demo'|awk '{print $3}'|awk 'BEGIN {FS=\" \"} NR > 3 {print $NF}'|xargs docker rmi||true" ]
    volumeMounts:
      - mountPath: /usr/bin/docker
        name: docker
      - mountPath: /var/run/docker.sock
        name: dockersock
  volumes:
    - name: docker
      hostPath:
        path: /usr/bin/docker
    - name: dockersock
      hostPath:
        path: /var/run/docker.sock
  nodeSelector:
    disktype: ssd
  restartPolicy: OnFailure

注意,踩坑

apiVersion: v1
kind: Pod
metadata:
  name: command-demo
  labels:
    purpose: demonstrate-command
spec:
  containers:
  - name: command-demo-container
    image: command-demo
    command: ["/bin/sh"]
    args: ["-c","docker images |grep 'command-demo'|awk '{print $3}'|awk 'BEGIN {FS=\" \"} NR > 3 {print $NF}'|xargs docker rmi||true"]
    volumeMounts:
      - mountPath: /usr/bin/docker
        name: docker
      - mountPath: /var/run/docker.sock
        name: dockersock
  volumes:
    - name: docker
      hostPath:
        path: /usr/bin/docker
    - name: dockersock
      hostPath:
        path: /var/run/docker.sock
  nodeSelector:
    disktype: ssd
  restartPolicy: OnFailure

若使用如上形式执行shell命令(容器创建前执行命令),则容器创建总是失败

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值