Kubectl Plugin

Kruise-tools 为 Kruise 的功能提供了一系列命令行工具,包括 kubectl-kruise,它的是 kubectl 的标准插件。

安装

Install via Krew

  1. Krew 是一个 kubectl 的插件,krew 本身可以自举安装和升级。 首先, 安装 krew

  2. 执行 kubectl krew install kruise 来安装 kruise 插件。

  3. 你可以通过 kubectl-kruisekubectl kruise 来使用。

Install manually

  1. 你可以从 releases 页面下载二进制文件,目前提供 linuxdarwin(OS X)、windows 系统以及 x86_64arm64 架构。如果你在使用其他的操作系统或架构,需要下载 kruise-tools 源码并通过 make build 打包。

  2. 解压缩,并移动到系统 PATH 路径中。

  1. $ tar xvf kubectl-kruise-darwin-amd64.tar.gz
  2. $ mv darwin-amd64/kubectl-kruise /usr/local/bin/
  1. 你可以通过 kubectl-kruisekubectl kruise 命令来使用。
  1. $ kubectl-kruise --help
  2. # or
  3. $ kubectl kruise --help

升级插件

通过 Krew 升级

执行 kubectl krew upgrade kruise 即可升级插件。

手动升级

手动升级的方式与安装过程一致。

Usage

expose

根据一个 workload(如 Deployment、CloneSet)、Service 或 Pod 来生成一个新的 service 对象。

  1. $ kubectl kruise expose cloneset nginx --port=80 --target-port=8000

scale

为 workload(如 Deployment, ReplicaSet, CloneSet, or Advanced StatefulSet) 设置新的副本数。

  1. $ kubectl kruise scale --replicas=3 cloneset nginx

它的效果与 kubectl scale --replicas=3 cloneset nginx 相同,即原生 kubectl scale 也适用。

rollout

可用的子命令: history, pause, restart, resume, status, undo, approve

  1. $ kubectl kruise rollout undo cloneset/nginx
  2. # built-in statefulsets
  3. $ kubectl kruise rollout status statefulsets/sts1
  4. # kruise statefulsets
  5. $ kubectl kruise rollout status statefulsets.apps.kruise.io/sts2
  6. # approve a kruise rollout resource named "rollout-demo" in "ns-demo" namespace
  7. $ kubectl-kruise rollout approve rollout-demo -n ns-demo

set

可用的子命令: env, image, resources, selector, serviceaccount, subject

  1. $ kubectl kruise set env cloneset/nginx STORAGE_DIR=/local
  2. $ kubectl kruise set image cloneset/nginx busybox=busybox nginx=nginx:1.9.1

exec

通过 exec 命令直接进入到 Pod 的 sidecar 中。

  1. # exec sidecar in pod
  2. $ kubectl kruise exec mypod -S sidecar-container -i -t -- bash

migrate

目前支持从 Deployment 迁移到 CloneSet。

  1. # Create an empty CloneSet from an existing Deployment.
  2. $ kubectl kruise migrate CloneSet --from Deployment -n default --dst-name deployment-name --create
  3. # Create a same replicas CloneSet from an existing Deployment.
  4. $ kubectl kruise migrate CloneSet --from Deployment -n default --dst-name deployment-name --create --copy
  5. # Migrate replicas from an existing Deployment to an existing CloneSet.
  6. $ kubectl-kruise migrate CloneSet --from Deployment -n default --src-name cloneset-name --dst-name deployment-name --replicas 10 --max-surge=2

scaledown

对 cloneset 指定 pod 缩容。

  1. # Scale down 2 with selective pods
  2. $ kubectl kruise scaledown cloneset/nginx --pods pod-a,pod-b

它会将 cloneset 设置 replicas=replicas-2,并删除指定的两个 pod。