1. 程式人生 > 其它 >kubectl外掛管理工具krew

kubectl外掛管理工具krew

文章轉載自:https://blog.51cto.com/loong576/2452592

一、k8s核心元件

Kubernetes 主要由以下幾個核心元件組成:

  • etcd 儲存了整個叢集的狀態;
  • apiserver 提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制;
  • controller manager 負責維護叢集的狀態,比如故障檢測、自動擴充套件、滾動更新等;
  • scheduler 負責資源的排程,按照預定的排程策略將Pod排程到相應的機器上;
  • kubelet 負責維護容器的生命週期,同時也負責Volume(CVI)和網路(CNI)的管理;
  • Container runtime 負責映象管理以及Pod和容器的真正執行(CRI);
  • kube-proxy 負責為Service提供cluster內部的服務發現和負載均衡

二、kubectl簡介

kubectl 是 Kubernetes 的命令列工具(CLI),是 Kubernetes 使用者和管理員必備的管理工具。該kubectl工具控制Kubernetes叢集管理器。它可以讓您檢查叢集資源,建立、刪除和更新元件以及更多功能。kubectl 提供了大量的子命令,方便管理 Kubernetes 叢集中的各種功能。

1.kubectl用法

  • kubectl -h 檢視子命令列表
  • kubectl options 檢視全域性選項
  • kubectl --help 檢視子命令的幫助
  • kubectl [command] [PARAMS] -o= 設定輸出格式(如 json、yaml、jsonpath 等)
  • kubectl explain [RESOURCE] 檢視資源的定義

2.kubectl 外掛krew

krew 是一個用來管理 kubectl 外掛的工具,類似於 apt 或 yum,支援搜尋、安裝和管理kubectl 外掛。

1.git安裝

# yum -y install git

2.安裝krew

官方地址:https://krew.sigs.k8s.io/docs/user-guide/setup/install/

(
  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/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

3.載入環境變數

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

# 可以永久寫的使用者的環境變數檔案,避免登出後失效。
# cat ~/.bashrc
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

4.安裝確認

#  kubectl plugin list 
The following compatible plugins are available:

/root/.krew/bin/kubectl-krew

四、krew使用

1.外掛索引更新

# kubectl krew update
Updated the local copy of plugin index.

2.外掛搜尋

# kubectl krew search
# kubectl krew search crt

搜尋全部外掛和模糊搜尋

3.安裝外掛

# kubectl krew install get-all
# kubectl krew install ns tail

4.檢視已裝外掛

# kubectl krew list
PLUGIN   VERSION
get-all  v1.2.1
krew     v0.3.2
ns       v0.7.1
tail     v0.10.1

5.檢視外掛詳情

# kubectl krew info ns
NAME: ns
URI: https://github.com/ahmetb/kubectx/archive/v0.7.1.tar.gz
SHA256: 6df4def2caf5a9c291310124098ad6c4c3123936ddd4080b382b9f7930a233ec
VERSION: v0.7.1
HOMEPAGE: https://github.com/ahmetb/kubectx
DESCRIPTION: 
Also known as "kubens", a utility to set your current namespace and switch
between them.

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.
/

6.外掛更新

更新外掛ns,由於是最新版所以更新失敗,可通過命令’kubectl krew upgrade’更新全部外掛

# kubectl krew upgrade ns
Updated the local copy of plugin index.
F1118 17:21:47.271927   81116 root.go:58] failed to upgrade plugin "ns": can't upgrade, the newest version is already installed

7.使用外掛–ns

# kubectl
kubectl     kubectl-get_all  kubectl-krew     kubectl-ns       kubectl-tail  
# kubectl ns weave
# kubectl-ns default

裝完外掛後可通過命令kubectl <plugin-name> 或者kubectl-<plugin-name> 使用外掛,比如’kubectl ns weave’和’kubectl-ns default’都可以切換預設表空間

8.使用外掛–get-all

該命令類似’kubectl get all --all-namespaces’,但更全。

# kubectl-get_all

9.使用外掛–tail

tail為輸出pod日誌,以上命令分別為:輸出全部pod日誌、輸出所有名稱空間default的pod日誌、輸出全部名稱空間中所有replicaset為kubeapps-8fd98f6f5的pod日誌、輸出名稱空間為kubeapps且replicaset為kubeapps-8fd98f6f5的pod日誌。

# kubectl-tail
# kubectl-tail --ns default 
# kubectl-tail --rs kubeapps-8fd98f6f5
# kubectl-tail --rs kubeapps/kubeapps-8fd98f6f5 

10.解除安裝外掛

解除安裝外掛tail

# kubectl krew uninstall tail
Uninstalled plugin tail

五、krew解除安裝

主要是刪除使用者目錄下的.krew隱藏資料夾:rm -rf ~/.krew

1.檢視安裝目錄

# kubectl krew version
OPTION        VALUE
GitTag        v0.3.2
GitCommit     bd754e1
IndexURI      https://github.com/kubernetes-sigs/krew-index.git
BasePath      /root/.krew
IndexPath     /root/.krew/index
InstallPath   /root/.krew/store
DownloadPath  /tmp/krew-downloads
BinPath       /root/.krew/bin

2.解除安裝

# rm -rf  /root/.krew