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

  • 2019 年 11 月 23 日
  • 筆記

環境說明:

主機名

操作系統版本

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核心組件

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

可能由於網絡原因介質無法下載,已上傳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

搜索全部插件和模糊搜索

3.安裝插件

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

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

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

8.使用插件–get-all

[root@master ~]# kubectl-get_all

該命令類似'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日誌。

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