k8s實踐(十三):kubectl插件管理工具krew

環境說明:

主機名 操作系統版本 ip docker version kubelet version 配置 備註
master Centos 7.6.1810 172.27.9.131 Docker 18.09.6 V1.14.2 2C2G master主機
node01 Centos 7.6.1810 172.27.9.135 Docker 18.09.6 V1.14.2 2C2G node節點
node02 Centos 7.6.1810 172.27.9.136 Docker 18.09.6 V1.14.2 2C2G node節點

 

k8s集羣部署詳見:Centos7.6部署k8s(v1.14.2)集羣
k8s學習資料詳見:基本概念、kubectl命令和資料分享

 

一、k8s核心組件

圖片.png

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 <command> --help 查看子命令的幫助
  • kubectl [command] [PARAMS] -o=<format> 設置輸出格式(如 json、yaml、jsonpath 等)
  • kubectl explain [RESOURCE] 查看資源的定義

2.kubectl 插件krew

krew 是一個用來管理 kubectl 插件的工具,類似於 apt 或 yum,支持搜索、安裝和管理kubectl 插件。

三、krew安裝

1.git安裝

[root@master ~]# yum -y install git

2.安裝krew

  set -x; cd "$(mktemp -d)" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/download/v0.3.2/krew.{tar.gz,yaml}" &&
  tar zxvf krew.tar.gz &&
  ./krew-"$(uname | tr '[:upper:]' '[:lower:]')_amd64" install \
    --manifest=krew.yaml --archive=krew.tar.gz

圖片.png

可能由於網絡原因介質無法下載,已上傳github:https://github.com/loong576/krew-for-kubectl.git

3.加載環境變量

[root@master ~]# export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

可以永久寫的用戶的環境變量文件,避免登出後失效。

4.安裝確認

[root@master ~]#  kubectl plugin list 
The following compatible plugins are available:

/root/.krew/bin/kubectl-krew

安裝完成

四、krew使用

1.插件索引更新

[root@master ~]# kubectl krew update
Updated the local copy of plugin index.

2.插件搜索

[root@master ~]# kubectl krew search
[root@master ~]# kubectl krew search crt

搜索全部插件和模糊搜索

圖片.png

3.安裝插件

[root@master ~]# kubectl krew install get-all
[root@master ~]# kubectl krew install ns tail

圖片.png

4.查看已裝插件

[root@master ~]# kubectl krew list
PLUGIN   VERSION
get-all  v1.2.1
krew     v0.3.2
ns       v0.7.1
tail     v0.10.1

5.查看插件詳情

[root@master ~]# 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.插件更新

[root@master ~]# 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

更新插件ns,由於是最新版所以更新失敗,可通過命令'kubectl krew upgrade'更新全部插件

7.使用插件--ns

[root@master ~]# kubectl
kubectl          kubectl-get_all  kubectl-krew     kubectl-ns       kubectl-tail  
[root@master ~]# kubectl ns weave
[root@master ~]# kubectl-ns default

圖片.png

裝完插件後可通過命令kubectl <plugin-name> 或者kubectl-<plugin-name> 使用插件,比如'kubectl ns weave'和'kubectl-ns default'都可以切換默認表空間

8.使用插件--get-all

[root@master ~]# kubectl-get_all

圖片.png

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

9.使用插件--tail

[root@master ~]# kubectl-tail
[root@master ~]# kubectl-tail --ns default 
[root@master ~]# kubectl-tail --rs kubeapps-8fd98f6f5
[root@master ~]# kubectl-tail --rs kubeapps/kubeapps-8fd98f6f5 

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

圖片.png

10.卸載插件

[root@master ~]# kubectl krew uninstall tail
Uninstalled plugin tail

卸載插件tail

五、krew卸載

1.查看安裝目錄

rm -rf ~/.krew
[root@master ~]# 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.卸載

[root@master ~]# rm -rf  /root/.krew 

 
 

本文所有腳本和配置文件已上傳:k8s實踐(十三):kubectl插件管理工具krew

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章