目录
一、理论
1.Kubectl插件
2.kubens
3.krew
二、实验
1.kubectl插件
2.kubens
3.krew
一、理论
1.kubectl插件
(1)概念
kubectl插件其实就是以kubectl-
为前缀的任意可执行文件,比如执行:
ln -s /bin/echo /usr/local/bin/kubectl-echo
此时就相当于安装了个echo
的kubectl插件,kubectl插件可以通过kubectl
+ 插件名
执行,kubectl xxx
其实就是相当于运行kubectl-xxx
。
2.kubens
(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
3.krew
(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
<td id="LC53" class="blob-code blob-code-inner js-file-line"> - <span class="pl-ent">uri</span>: <span class="pl-s">https://github.com/kubernetes-sigs/krew/releases/download/v0.4.3/krew-linux_amd64.tar.gz</span></td>
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 <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.kubectl插件
(1)执行
(2)输出
2.kubens
(1)下载安装
(2)列出所有 ns
(3)切换 ns
切换命名空间为kube-system
切换命名空间后,无需指定命名空间,即可查看切换后的命名空间资源
3.krew
(1) 安装git
(2)准备2个文件
(3)安装
(4)加载环境变量
(5)查看版本
(6)验证