目录
(1)概念
kubectl插件其实就是以kubectl-为前缀的任意可执行文件,比如执行:
ln -s /bin/echo /usr/local/bin/kubectl-echo
此时就相当于安装了个echo的kubectl插件,kubectl插件可以通过kubectl + 插件名执行,kubectl xxx其实就是相当于运行kubectl-xxx。
(1)概念
k8s每次查看指定命名空间的资源都需要加 -n 命名空间 来指定命名空间,我们可以通过开源项目kubens来切换当前命名空间,切换命名空间后,就无需每次都使用 -n 命令来指定命名空间了
(2)下载安装(第一种方式)
线上安装:
- curl -L https://github.com/ahmetb/kubectx/releases/download/v0.9.1/kubens -o /bin/kubens
- chmod +x /bin/kubens
- kubens <命名空间名称>
列出所有 ns
- [root@master ~]# kubens
- default
- kube-flannel
- kube-node-lease
- kube-public
- kube-system
切换 ns
- ##切换命名空间为kube-system
- [root@master ~]# kubens kube-system
- Context "kubernetes-admin@kubernetes" modified.
- Active namespace is "kube-system".
- [root@master ~]#
-
- ##切换命名空间后,无需指定命名空间,即可查看切换后的命名空间资源
- [root@master ~]# kubectl get pods
- NAME READY STATUS RESTARTS AGE
- coredns-bccdc95cf-5wqbn 1/1 Running 0 19h
- coredns-bccdc95cf-jqtzh 1/1 Running 0 19h
- etcd-master 1/1 Running 5 8d
- kube-apiserver-master 1/1 Running 5 8d
- kube-controller-manager-master 1/1 Running 5 8d
- kube-flannel-ds-amd64-cqzr2 1/1 Running 4 7d22h
- kube-flannel-ds-amd64-kj6kr 1/1 Running 5 7d22h
- kube-flannel-ds-amd64-pkcnl 1/1 Running 4 7d22h
- kube-proxy-d6scc 1/1 Running 6 8d
- kube-proxy-gjmvl 1/1 Running 5 8d
- kube-proxy-zw6sj 1/1 Running 5 8d
- kube-scheduler-master 1/1 Running 5 8d
- kubernetes-dashboard-859b87d4f7-phhlt 1/1 Running 4 7d20h
- [root@master ~]#
(3)下载安装(第二种方式)
离线安装:
- 1. 查看插件列表
- https://github.com/kubernetes-sigs/krew-index/tree/master/plugins
-
- 2. 下载需要插件 ns 的yaml文件
- wget https://github.com/kubernetes-sigs/krew-index/blob/master/plugins/ns.yaml
-
- 3. 获取 ns 插件所需要软件包
- [root@master ~]# cat ns.yaml |grep uri
- uri: https://github.com/ahmetb/kubectx/archive/v0.9.4.tar.gz
-
- 4. 下载
- wget https://github.com/ahmetb/kubectx/archive/v0.9.4.tar.gz
-
- 5. 安装
- kubectl krew install --manifest=ns.yaml --archive=v0.9.4.tar.gz
-
- 6. 验证
- [root@master ~]# kubectl ns
- default
- ingress-nginx
- kube-node-lease
- kube-public
- kube-system
(1) 概念

krew是kubectl插件的包管理工具。借助Krew,可以轻松地使用kubectl plugin:发现插件、安装和管理插件。使用类似apt、dnf或者brew。
- 对于kubectl用户:krew能帮助用户搜索、安装和管理kubectl插件;
- 对于插件开发者:krew可以帮助你在多种平台上打包和发布插件。
Krew 是一个由 Kubernetes SIG CLI 社区维护的 kubectl 命令行工具的插件管理器,Krew 默认以用户主目录下的隐藏目录 .krew 为工作目录。
Krew 插件索引 所维护的 kubectl 插件并 未经过安全性审查。 安装前需了解安装和运行第三方插件的安全风险。
(2)下载安装krew(离线安装)
krew仅兼容kubectl v1.12或更高版本,安装过程如下:
- 1. yum install git -y
-
- 2. wget https://github.com/kubernetes-sigs/krew/releases/latest/download/krew-linux_amd64.tar.gz && tar zxvf krew-linux_amd64.tar.gz
-
- 3. 获取krew.yaml文件
- wget https://github.com/kubernetes-sigs/krew-index/blob/master/plugins/krew.yaml
-
- 4. 查看krew.yaml 获取krew安装包地址
- cat krew.yaml|grep krew-linux_amd64
-
id="LC53" class="blob-code blob-code-inner js-file-line"> - "pl-ent">uri: "pl-s">https://github.com/kubernetes-sigs/krew/releases/download/v0.4.3/krew-linux_amd64.tar.gz -
- 5. 下载 krew安装包
- wget https://github.com/kubernetes-sigs/krew/releases/download/v0.4.3/krew-linux_amd64.tar.gz
-
- 6. 安装:
- ./krew-linux_amd64 install --manifest=krew.yaml --archive=krew-linux_amd64.tar.gz
-
- 7. 加载环境变量 vi ~/.bashrc
- export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
-
- 8. 验证
- [root@master ~]# kubectl krew -h
- krew is the kubectl plugin manager.
- You can invoke krew through kubectl: "kubectl krew [command]..."
-
- Usage:
- kubectl krew [command]
-
- Available Commands:
- completion generate the autocompletion script for the specified shell
- 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
(4)krew的使用
- kubectl krew search # 显示所有插件
- kubectl krew install view-secret # 安装名为view-secret的插件
- kubectl view-secret # 使用该插件
- kubectl krew upgrade # 升级安装的插件
- kubectl krew remove view-secret # 卸载插件
(5)images插件
images插件允许你查看当前命名空间(甚至整个集群)Workload中使用的镜像信息。这个对运维的同学来说比较友好,可以节省大部分descript pod的操作。当前支持几个功能如下:
- 列出所有命名空间workload的镜像信息
-
- 指定字段展示镜像的关联k8s信息
-
- 指定单独的命名空间展示镜像信息
安装:
kubectl krew install images
(6)view-secret 插件
大部分情况下,我们secret里面的信息会事先经过base64编码后存储。当我们需要从secret里面读取内容在做decode,有时也不免糟心。比如我们想从secret里面取SA的token,虽然我们可以用jsonpath | decode拿到信息
kubectl get secret -o=jsonpath='{.data.token}' |base64 -d
但是运维人员的目标能少打命令绝不多敲一个字母。那么这个时候view-secret就可以帮助到我们。
kubectl krew install view-secret
(7)view-allocations 插件
对于想快速知道当前你的kubernetes集群资源分布情况,view-allocations这个插件它一定能够帮助。view-allocations当前能够根据resource,node和pod三个维度展示集群当前的资源分配状况。值得一提的是如果你的kubernetes集群有GPU节点,采用view-allocations也可以快速查到你的GPU显卡分配状态.
- Resource Requested %Requested Limit %Limit Allocatable Free
- nvidia.com/gpu 14.0 70% 14.0 70% 20.0 6.0
- ├─ node1 4.0 100% 4.0 100% 4.0 0.0
- ├─ node2 3.0 75% 3.0 75% 4.0 1.0
- ├─ node3 0.0 0% 0.0 0% 4.0 4.0
- ├─ node4 4.0 100% 4.0 100% 4.0 0.0
- └─ node5 3.0 75% 3.0 75% 4.0 1.0
(8)shell脚本连续下载
需要的把images替换成想下载的资源。
- #!/bin/bash
- export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
- while true;
- do
- kubectl krew install images
- sleep 5;
- done
(1)执行
![]()
(2)输出

(1)下载安装

(2)列出所有 ns

(3)切换 ns
切换命名空间为kube-system

切换命名空间后,无需指定命名空间,即可查看切换后的命名空间资源
(1) 安装git

(2)准备2个文件
![]()

(3)安装

![]()
![]()
(4)加载环境变量
![]()
(5)查看版本

(6)验证
