Kubernetes 使用插件扩展 kubectl

例子演示

编写 kubectl-foo ,拷贝至 /usr/local/bin/

bash 复制代码
#!/bin/bash

# 可选的参数处理
if [[ "$1" == "version" ]]
then
    echo "1.0.0"
    exit 0
fi

# 可选的参数处理
if [[ "$1" == "config" ]]
then
    echo $KUBECONFIG
    exit 0
fi

echo "I am a plugin named kubectl-foo"

验证:

bash 复制代码
fananchong@myubuntu:~$ export KUBECONFIG=~/.kube/config
fananchong@myubuntu:~$ kubectl foo
I am a plugin named kubectl-foo
fananchong@myubuntu:~$ kubectl foo config
/home/fananchong/.kube/config

官方文档: https://kubernetes.io/zh-cn/docs/tasks/extend-kubectl/kubectl-plugins/

sample-cli-plugin

官方 Github 库也提供了例子: https://github.com/kubernetes/sample-cli-plugin

该例子主要演示了:

  • 如何创建一个遵循 kubectl 模式的新自定义命令(同时,只是用 Golang 编写)
  • 如何获取用户的 KUBECONFIG 设置并对其进行修改
  • 如何通用地使用提供的 "cli-runtime" 帮助程序集合来处理 kubectl 和第三方插件

该例子主要想表述的还是,可以使用 k8s.io/client-go 库,并按 kubectl 插件的方式,来扩展 kubectl 的功能

k8s.io/client-go

该库是 K8s 官方提供的与kube-apiserver交互的客户端库

Github 上代码镜像: https://github.com/kubernetes/client-go

Readme.md 中有介绍,不同的 K8s 版本,有对应的 client-go 版本,开发时不能用错

相关推荐
杰克逊的日记7 小时前
k8s某pod节点资源使用率过高,如何调整
linux·docker·kubernetes
古城小栈7 小时前
Go 语言容器感知,自动适配 K8s 资源限制
golang·kubernetes
闲人编程1 天前
中间件开发与生命周期管理
缓存·中间件·生命周期·日志·扩展·codecapsule
VermiliEiz1 天前
使用二进制文件方式部署kubernetes(1)
kubernetes·云计算
云计算小黄同学1 天前
k8s中的服务通过secret访问数据库的实际案例
数据库·阿里云·kubernetes
炸裂狸花猫1 天前
开源日志收集体系ELK
elk·elasticsearch·云原生·kubernetes·metricbeat
网络小白不怕黑1 天前
Containerd指南:从Docker到K8s的容器运行时
docker·容器·kubernetes
Hui Baby1 天前
K8S蓝绿发布
java·容器·kubernetes
一周困⁸天.1 天前
K8S-Helm
容器·kubernetes