All Projects → lwolf → Kube Cleanup Operator

lwolf / Kube Cleanup Operator

Licence: mit
Kubernetes Operator to automatically delete completed Jobs and their Pods

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Kube Cleanup Operator

siddhi-operator
Operator allows you to run stream processing logic directly on a Kubernetes cluster
Stars: ✭ 16 (-94.97%)
Mutual labels:  kubernetes-operator
Learn-ServiceMesh-Workshop
Labs for Kubecon NA Workshop on Service Mesh with Cloud PKS
Stars: ✭ 13 (-95.91%)
Mutual labels:  kubernetes-operator
Kubeplus
CRD for CRDs to design multi-tenant platform services from Helm charts
Stars: ✭ 278 (-12.58%)
Mutual labels:  kubernetes-operator
konsumerator
Kafka Consumer Operator. Kubernetes operator to manage consumers of unbalanced kafka topics with per-partition vertical autoscaling based on Prometheus metrics
Stars: ✭ 20 (-93.71%)
Mutual labels:  kubernetes-operator
rabbitmq-operator
RabbitMQ Kubernetes operator
Stars: ✭ 16 (-94.97%)
Mutual labels:  kubernetes-operator
Capsule
Kubernetes Operator for multi-tenancy
Stars: ✭ 261 (-17.92%)
Mutual labels:  kubernetes-operator
wordpress-operator
Bitpoke Kubernetes operator for WordPress
Stars: ✭ 159 (-50%)
Mutual labels:  kubernetes-operator
Es Operator
Kubernetes Operator for Elasticsearch
Stars: ✭ 282 (-11.32%)
Mutual labels:  kubernetes-operator
port-map-operator
LoadBalancer Service type implementation for home Kubernetes clusters via Port Control Protocol.
Stars: ✭ 25 (-92.14%)
Mutual labels:  kubernetes-operator
Operator Kit
A library for creating a Kubernetes Operator
Stars: ✭ 275 (-13.52%)
Mutual labels:  kubernetes-operator
couchdb-operator
prototype kubernetes operator for couchDB
Stars: ✭ 17 (-94.65%)
Mutual labels:  kubernetes-operator
keenest-rube
Clojure interface to Kubernetes
Stars: ✭ 57 (-82.08%)
Mutual labels:  kubernetes-operator
Navigator
Managed Database-as-a-Service (DBaaS) on Kubernetes
Stars: ✭ 266 (-16.35%)
Mutual labels:  kubernetes-operator
netperf-operator
Kubernetes operator to measure TCP transmission speed between 2 pods
Stars: ✭ 39 (-87.74%)
Mutual labels:  kubernetes-operator
Airflow Operator
Kubernetes custom controller and CRDs to managing Airflow
Stars: ✭ 278 (-12.58%)
Mutual labels:  kubernetes-operator
wg-operator
Wireguard operator
Stars: ✭ 20 (-93.71%)
Mutual labels:  kubernetes-operator
Service Level Operator
Manage application's SLI and SLO's easily with the application lifecycle inside a Kubernetes cluster
Stars: ✭ 260 (-18.24%)
Mutual labels:  kubernetes-operator
Kafka Operator
A Kafka Operator for Kubernetes
Stars: ✭ 302 (-5.03%)
Mutual labels:  kubernetes-operator
Securecodebox
secureCodeBox (SCB) - continuous secure delivery out of the box
Stars: ✭ 279 (-12.26%)
Mutual labels:  kubernetes-operator
Schemahero
A Kubernetes operator for declarative database schema management (gitops for database schemas)
Stars: ✭ 265 (-16.67%)
Mutual labels:  kubernetes-operator

Kubernetes cleanup operator

Build Status Go Report Card Docker Repository on Quay codecov

Kubernetes Controller to automatically delete completed Jobs and Pods. Controller listens for changes in Pods and Jobs and acts accordingly with config arguments.

Some common use-case scenarios:

  • Delete Jobs and their pods after their completion
  • Delete Pods stuck in a Pending state
  • Delete Pods in Evicted state
  • Delete orphaned Pods (Pods without an owner in non-running state)
flag name pod job
delete-successful-after delete after specified period if owned by the job delete after specified period
delete-failed-after delete after specified period if owned by the job delete after specified period
delete-orphaned-pods-after delete after specified period (any completion status) N/A
delete-evicted-pods-after delete on discovery N/A
delete-pending-pods-after delete after specified period N/A

Helm chart

Chart is available to install from https://charts.lwolf.org/ (https://github.com/lwolf/kube-charts)

$ helm repo add lwolf-charts http://charts.lwolf.org
"lwolf-charts" has been added to your repositories
$ helm search kube-cleanup
NAME                              	CHART VERSION	APP VERSION	DESCRIPTION
lwolf-charts/kube-cleanup-operator	1.0.0        	v0.8.1     	Kubernetes Operator to automatically delete completed Job...

Usage

screensharing

# remember to change namespace in RBAC manifests for monitoring namespaces other than "default"

kubectl create -f https://raw.githubusercontent.com/lwolf/kube-cleanup-operator/master/deploy/deployment/rbac.yaml

# create deployment
kubectl create -f https://raw.githubusercontent.com/lwolf/kube-cleanup-operator/master/deploy/deployment/deployment.yaml


kubectl logs -f $(kubectl get pods --namespace default -l "run=cleanup-operator" -o jsonpath="{.items[0].metadata.name}")

# Use simple job to test it
kubectl create -f https://k8s.io/examples/controllers/job.yaml

Docker images

docker pull quay.io/lwolf/kube-cleanup-operator

or you can build it yourself as follows:

$ docker build .

Development

$ make install_deps
$ make build
$ ./bin/kube-cleanup-operator -run-outside-cluster -dry-run=true

Usage

Pre v0.7.0

    $ ./bin/kube-cleanup-operator --help
    Usage of ./bin/kube-cleanup-operator:
      -namespace string
            Watch only this namespace (omit to operate clusterwide)
      -run-outside-cluster
            Set this flag when running outside of the cluster.
      -keep-successful
            the number of hours to keep a successful job
            -1 - forever 
            0  - never (default)
            >0 - number of hours
      -keep-failures
            the number of hours to keep a failed job
            -1 - forever (default)
            0  - never
            >0 - number of hours
      -keep-pending
            the number of hours to keep a pending job
            -1 - forever (default)
            0  - forever
            >0 - number of hours
      -dry-run
            Perform dry run, print only

After v0.7.0

Usage of ./bin/kube-cleanup-operator:
  -delete-evicted-pods-after duration
        Delete pods in evicted state (golang duration format, e.g 5m), 0 - never delete (default 15m0s)
  -delete-failed-after duration
        Delete jobs and pods in failed state after X duration (golang duration format, e.g 5m), 0 - never delete
  -delete-orphaned-pods-after duration
        Delete orphaned pods. Pods without an owner in non-running state (golang duration format, e.g 5m), 0 - never delete (default 1h0m0s)
  -delete-pending-pods-after duration
        Delete pods in pending state after X duration (golang duration format, e.g 5m), 0 - never delete
  -delete-successful-after duration
        Delete jobs and pods in successful state after X duration (golang duration format, e.g 5m), 0 - never delete (default 15m0s)
  -dry-run
        Print only, do not delete anything.
  -ignore-owned-by-cronjobs
        [EXPERIMENTAL] Do not cleanup pods and jobs created by cronjobs
  -keep-failures int
        Number of hours to keep failed jobs, -1 - forever (default) 0 - never, >0 number of hours (default -1)
  -keep-pending int
        Number of hours to keep pending jobs, -1 - forever (default) >0 number of hours (default -1)
  -keep-successful int
        Number of hours to keep successful jobs, -1 - forever, 0 - never (default), >0 number of hours
  -legacy-mode true
        Legacy mode: true - use old `keep-*` flags, `false` - enable new `delete-*-after` flags (default true)
  -listen-addr string
        Address to expose metrics. (default "0.0.0.0:7000")
  -namespace string
        Limit scope to a single namespace
  -run-outside-cluster
        Set this flag when running outside of the cluster.

Optional parameters

DISCLAIMER: These parameters are not supported on this project since they are implemented by the underlying libraries. Any malfunction regarding the use them is not covered by this GitHub repository. They are included in this documentation since the debugging process is simplified.

-alsologtostderr
  log to standard error as well as files
-log_backtrace_at value
  when logging hits line file:N, emit a stack trace
-log_dir string
  If non-empty, write log files in this directory
-logtostderr
  log to standard error instead of files
-vmodule value
  comma-separated list of pattern=N settings for file-filtered logging
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].