溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-08-07 19:19:00 來源:網(wǎng)絡(luò) 閱讀:928 作者:loong576 欄目:系統(tǒng)運(yùn)維

環(huán)境說明:

主機(jī)名 操作系統(tǒng)版本 ip docker version kubelet version 配置 備注
master Centos 7.6.1810 172.27.9.131 Docker 18.09.6 V1.14.2 2C2G master主機(jī)
node01 Centos 7.6.1810 172.27.9.135 Docker 18.09.6 V1.14.2 2C2G node節(jié)點(diǎn)
node02 Centos 7.6.1810 172.27.9.136 Docker 18.09.6 V1.14.2 2C2G node節(jié)點(diǎn)

?

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

?k8s高可用集群部署詳見:Centos7.6部署k8s v1.16.4高可用集群(主備模式)

一、k8s核心組件

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

Kubernetes 主要由以下幾個(gè)核心組件組成:

  • etcd 保存了整個(gè)集群的狀態(tài);
  • apiserver 提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制;
  • controller manager 負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等;
  • scheduler 負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上;
  • kubelet 負(fù)責(zé)維護(hù)容器的生命周期,同時(shí)也負(fù)責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;
  • Container runtime 負(fù)責(zé)鏡像管理以及Pod和容器的真正運(yùn)行(CRI);
  • kube-proxy 負(fù)責(zé)為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡

二、kubectl簡(jiǎn)介

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

1.kubectl用法
  • kubectl -h 查看子命令列表
  • kubectl options 查看全局選項(xiàng)
  • kubectl <command> --help 查看子命令的幫助
  • kubectl [command] [PARAMS] -o=<format> 設(shè)置輸出格式(如 json、yaml、jsonpath 等)
  • kubectl explain [RESOURCE] 查看資源的定義
2.kubectl 插件krew

krew 是一個(gè)用來管理 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

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

可能由于網(wǎng)絡(luò)原因介質(zhì)無法下載,已上傳github:https://github.com/loong576/krew-for-kubectl.git

3.加載環(huán)境變量
[root@master ~]# export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

可以永久寫的用戶的環(huán)境變量文件,避免登出后失效。

4.安裝確認(rèn)
[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

搜索全部插件和模糊搜索

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

3.安裝插件
[root@master ~]# kubectl krew install get-all
[root@master ~]# kubectl krew install ns tail

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

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

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

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

8.使用插件--get-all
[root@master ~]# kubectl-get_all

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

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

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

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實(shí)踐(十三):kubectl插件管理工具krew

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI