普段からkubectlコマンドを打つ人向けに便利なツールを紹介します。
TOC
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