kubectl plugin for OpenKruise
Kruise-tools provides commandline tools for kruise features, such as kubectl-kruise
, which is a standard plugin of kubectl
.
Krew itself is a kubectl plugin that is installed and updated via Krew (yes, Krew self-hosts). First, install krew.
Run kubectl krew install kruise
to install kruise plugin via Krew.
Then you can use it with kubectl-kruise
or kubectl kruise
.
$ kubectl-kruise --help
# or
$ kubectl kruise --help
You can simply download the binary from the releases page. Currently linux
, darwin
(OS X), windows
with x86_64
and arm64
are provided. If you are using some other systems or architectures, you have to download the source code and execute make build
to build the binary.
Extract and move it to system PATH.
$ tar xvf kubectl-kruise-darwin-amd64.tar.gz
$ mv darwin-amd64/kubectl-kruise /usr/local/bin/
kubectl-kruise
or kubectl kruise
.$ kubectl-kruise --help
# or
$ kubectl kruise --help
Run kubectl krew upgrade kruise
to upgrade kruise plugin via Krew.
Same to install manually
.
To load auto completions:
Bash:
$ source <(kubectl-kruise completion bash)
Zsh:
# If shell completion is not already enabled in your environment,
# you will need to enable it. You can execute the following once:
$ echo "autoload -U compinit; compinit" >> ~/.zshrc
# To load completions for each session, execute once:
$ kubectl-kruise completion zsh > "${fpath[1]}/_kubectl-kruise"
Fish:
$ kubectl-kruise completion fish | source
PowerShell:
PS> kubectl-kruise completion powershell | Out-String | Invoke-Expression
### expose
Take a workload(e.g. deployment, cloneset), service or pod and expose it as a new Kubernetes Service.
```bash
$ kubectl kruise expose cloneset nginx --port=80 --target-port=8000
Set a new size for a Deployment, ReplicaSet, CloneSet, or Advanced StatefulSet.
$ kubectl kruise scale --replicas=3 cloneset nginx
It equals to kubectl scale --replicas=3 cloneset nginx
.
Available commands: history
, pause
, restart
, resume
, status
, undo
, approve
.
$ kubectl kruise rollout undo cloneset/nginx
# built-in statefulsets
$ kubectl kruise rollout status statefulsets/sts1
# kruise statefulsets
$ kubectl kruise rollout status statefulsets.apps.kruise.io/sts2
# approve a kruise rollout resource named "rollout-demo" in "ns-demo" namespace
$ kubectl kruise rollout approve rollout/rollout-demo -n ns-demo`
# undo a kruise rollout resource
$ kubectl kruise rollout undo rollout/rollout-demo
Available commands: env
, image
, resources
, selector
, serviceaccount
, subject
.
$ kubectl kruise set env cloneset/nginx STORAGE_DIR=/local
$ kubectl kruise set image cloneset/nginx busybox=busybox nginx=nginx:1.9.1
Currently it supports migrate from Deployment to CloneSet.
# Create an empty CloneSet from an existing Deployment.
$ kubectl kruise migrate CloneSet --from Deployment -n default --dst-name deployment-name --create
# Create a same replicas CloneSet from an existing Deployment.
$ kubectl kruise migrate CloneSet --from Deployment -n default --dst-name deployment-name --create --copy
# Migrate replicas from an existing Deployment to an existing CloneSet.
$ kubectl-kruise migrate CloneSet --from Deployment -n default --src-name cloneset-name --dst-name deployment-name --replicas 10 --max-surge=2
Scaledown a cloneset with selective Pods.
# Scale down 2 with selective pods
$ kubectl kruise scaledown cloneset/nginx --pods pod-a,pod-b
It will decrease replicas=replicas-2 of this cloneset and delete the specified pods.
Exec working sidecar container of pod when sidecarset is hot-upgrade.
# Get output from running 'date' command in working sidecar container from pod mypod
kubectl kruise exec mypod -S sidecar-container -- date
# Switch to raw terminal mode, sends stdin to 'bash' in working sidecar container from cloneset myclone
# and sends stdout/stderr from 'bash' back to the client
kubectl kruise exec clone/myclone -S sidecar-container -it -- bash
kubectl-kruise migrate demo
kubectl kruise migrate CloneSet --from Deployment --src-name deployment-demo --dst-name cloneset-demo --create --copy
We encourage you to help out by reporting issues, improving documentation, fixing bugs, or adding new features.