[Kubernetes]kubectlに便利なツール

普段からkubectlコマンドを打つ人向けに便利なツールを紹介します。

Krew – kubectlのパッケージマネージャ

kubectlのプラグインをパッケージ管理できます。インストールは、ここに掲載されています。

参考 Krew github
  • Ubuntuへのインストール例
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" &&
  tar zxvf krew.tar.gz &&
  KREW=./krew-"${OS}_${ARCH}" &&
  "$KREW" install krew
)

$HOME/.bashrcにてPATHを追加します。

export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

インストールが完了するとkubectl krewコマンドが使えるようになります。

$ kubectl krew
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."

Usage:
  kubectl krew [command]

Available Commands:
  help        Help about any command
  index       Manage custom plugin indexes
  info        Show information about an available plugin
  install     Install kubectl plugins
  list        List installed kubectl plugins
  search      Discover kubectl plugins
  uninstall   Uninstall plugins
  update      Update the local copy of the plugin index
  upgrade     Upgrade installed plugins to newer versions
  version     Show krew version and diagnostics

Flags:
  -h, --help      help for krew
  -v, --v Level   number for the log level verbosity

Use "kubectl krew [command] --help" for more information about a command.

kubectx + kubens – 現在のコンテクストとネームスペースを変更可能

contextとnamespaceを気軽に変更できるCLIを提供しています。

参考 kubectx github

本機能をkrewのパッケージとしても提供されているので、今回はkrewを使ってインストールします。

  • kubensのインストール
$ kubectl krew install ns
Updated the local copy of plugin index.
Installing plugin: ns
Installed plugin: ns
\
 | Use this plugin:
 |      kubectl ns
 | Documentation:
 |      https://github.com/ahmetb/kubectx
 | Caveats:
 | \
 |  | If fzf is installed on your machine, you can interactively choose
 |  | between the entries using the arrow keys, or by fuzzy searching
 |  | as you type.
 | /
/
WARNING: You installed plugin "ns" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.
  • kubectxのインストール
$ kubectl krew install ctx
Updated the local copy of plugin index.
Installing plugin: ctx
Installed plugin: ctx
\
 | Use this plugin:
 |      kubectl ctx
 | Documentation:
 |      https://github.com/ahmetb/kubectx
 | Caveats:
 | \
 |  | If fzf is installed on your machine, you can interactively choose
 |  | between the entries using the arrow keys, or by fuzzy searching
 |  | as you type.
 |  | See https://github.com/ahmetb/kubectx for customization and details.
 | /
/
WARNING: You installed plugin "ctx" from the krew-index plugin repository.
   These plugins are not audited for security by the Krew maintainers.
   Run them at your own risk.

これにより、contextやnamespaceのリスト表示やデフォルトの変更が簡単にできます。

  • contextの表示
$ kubectl ctx
kubernetes2-admin@kubernetes2
kubernetes-admin@kubernetes
  • contextの選択
$ kubectl ctx kubernetes-admin@kubernetes
Switched to context "kubernetes-admin@kubernetes".
  • namespaceの表示
$ kubectl ns
capi-kubeadm-bootstrap-system
capi-kubeadm-control-plane-system
capi-system
capi-webhook-system
capv-system
cert-manager
default
kube-node-lease
kube-public
kube-system
  • namespaceの変更
$ kubectl ns kube-public
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "kube-public".

kubectl-aliases – kubectlのエイリアス

kubectlでよく使うコマンドのエイリアスをまとめたものです。

参考 kubectl-aliases github

エイリアス郡をインストールします。

curl -o ~/.kubectl_aliases "https://raw.githubusercontent.com/ahmetb/kubectl-alias/master/.kub
ectl_aliases"

また、下記を.bashrcに設定して使用できるようにします。

[ -f ~/.kubectl_aliases ] && source ~/.kubectl_aliases
function kubectl() { echo "+ kubectl $@">&2; command kubectl $@; }

2行目の設定は、フルコマンドを毎回表示するためのものです。不要な場合は抜いてください。

  • kube-systemのpodをdescribeする
$ ksysdpo
+ kubectl --namespace=kube-system describe pods
  • 全てのネームスペースのpodを表示する
$ kgpoall
+ kubectl get pods --all-namespaces
NAMESPACE                           NAME                                                             READY   STATUS    RESTARTS   AGE
capi-kubeadm-bootstrap-system       capi-kubeadm-bootstrap-controller-manager-5487bc848-j4t66        2/2     Running   2          75d
capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager-67f99b459-2h7c5    2/2     Running   2          75d
capi-system                         capi-controller-manager-6c9fbb99c8-5pjvt                         2/2     Running   2          75d
capi-webhook-system                 capi-controller-manager-b4f59564f-n6hjw                          2/2     Running   2          75d
capi-webhook-system                 capi-kubeadm-bootstrap-controller-manager-6cdb7bfd75-8z8hp       2/2     Running   2          75d
capi-webhook-system                 capi-kubeadm-control-plane-controller-manager-64b4687986-lsbl5   2/2     Running   2          75d
capi-webhook-system                 capv-controller-manager-75654d6b-lxmbf                           2/2     Running   2          75d
capv-system                         capv-controller-manager-7bc54695bc-vscmk                         2/2     Running   2          75d
cert-manager                        cert-manager-86cb5dcfdd-mt5rn                                    1/1     Running   1          75d
cert-manager                        cert-manager-cainjector-84cf775b89-ds8v4                         1/1     Running   1          75d
cert-manager                        cert-manager-webhook-7f9f4f8dcb-fnpmj                            1/1     Running   1          75d
kube-system                         antrea-agent-z8tvg                                               2/2     Running   2          110d
kube-system                         antrea-controller-86bc875496-6px2m                               1/1     Running   1          110d
kube-system                         coredns-558bd4d5db-kr5pb                                         1/1     Running   2          110d
kube-system                         coredns-558bd4d5db-mf2rp                                         1/1     Running   2          110d
kube-system                         etcd-k8s-mgmt-cluster-cp1                                        1/1     Running   3          121d
kube-system                         kube-apiserver-k8s-mgmt-cluster-cp1                              1/1     Running   3          121d
kube-system                         kube-controller-manager-k8s-mgmt-cluster-cp1                     1/1     Running   3          121d
kube-system                         kube-proxy-nz52x                                                 1/1     Running   3          121d
kube-system                         kube-scheduler-k8s-mgmt-cluster-cp1                              1/1     Running   3          121d

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA