kubectl也可以扩展了

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 简单介绍1.12.x的kubectl的plugin的扩展机制的演示

前言

kubernetes作为一个开放式式的分布式系统,其提供了多种扩展机制如CRD, service catalog等给用户做系统功能增强以及外部系统对接等。当时以往版本都是以扩展服务端的功能,现在刚发布的全新版本1.12.0已经可以支持kubectl命令行的扩展了。下面将通过一个简单例子来演示如何做kubectl的扩展。

请注意:目前kubectl的扩展alpha状态,从1.12,0开始提供。

kubectl扩展例子演示

例子的目的

通常我们会通过kubect get pod/xxx -o yaml的方式来展示对应的k8s资源对象的申明,但是这个输出比较不太友好,输出没有对于关键字做高亮展示,可否提供一个命令对于输出做渲染呢?

其实很简单,通过简单的kubectl命令扩展就可以做到,我们把这个扩展的kubectl子命令定义为inspect,这样,我们期望的命令是:

kubectl inspect pod/xxxx

然后期望结果类似如下的渲染展示:

image

前置条件

  • 升级kubectl 到新的1.12.x版本,在Mac下可以执行:
brew upgrade kubernetes-cli
  • 安装对应的渲染工具bat
brew install bat

创建kubectl的inspect plugin

/usr/local/bin下创建一个kubectl-inspect的文件,并输入以下内容
这里需要注意的是,文件名必须是kubectl-<子命令>的形式

#!/bin/bash
kubectl get "$@" -o yaml | bat -l yaml -p

并将该文件改为可执行

chmod +x kubectl-inspect

测试

在命令行执行

kubectl inspect pod/xxx

就可以看上面的效果了

小结

这个plugin的机制还是十分诱人的,让维护人员都可以集中在kubectl命令里操作了。kubernetes在向分布式的OS又向前迈了一小步,kubectl就像是linux的cmd了

参考

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
网络协议 网络虚拟化 数据中心
一文彻悟容器网络通信
作者:云原生应用平台 - 陈赟豪(环河)本文深入浅出地介绍了容器网络出现的背景、容器网络的CNI插件及分类对比,描述了容器网络插件的Pod同节点和跨节点通信过程及其应用场景,让读者能过通过简短的篇幅窥见容器网络的真谛。背景容器网络为何出现在一个汽车发动机的生产车间中,汽车发动机的各个组件会存在一定的顺序进行组装,这就要求有直接关系的组件必须知道下一个组件的具体位置。当一个汽车发动机组装完成后,距离
1338 0
一文彻悟容器网络通信
|
9月前
|
运维 Prometheus 监控
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
WatchAlert 是一个开源的多数据源告警引擎,支持从 Prometheus、Elasticsearch、Kubernetes 等多种数据源获取监控数据,并根据预定义的告警规则触发告警。它具备多数据源支持、灵活的告警规则、多渠道告警通知、可扩展架构和高性能等核心特性,帮助团队更高效地监控和响应问题。项目地址:https://github.com/opsre/WatchAlert
1082 17
🎉 WatchAlert - 开源多数据源告警引擎【运维研发必备能力】
|
11月前
|
JSON 前端开发 测试技术
API接口 |产品经理一定要懂的10%技术知识
作为产品经理,掌握约10%的技术知识对处理API相关工作至关重要。这包括理解API的基本概念及其作为数据交换的桥梁作用;熟悉JSON和XML两种主要数据格式及其特点;了解常见HTTP请求方法(GET、POST、PUT、DELETE)及响应状态码;关注API安全性,如认证授权和数据加密;掌握API版本管理和错误处理技巧;重视性能优化,以提升用户体验;参与API联调测试,确保稳定可靠;并与前后端团队紧密协作,选择合适的第三方API服务,推动产品高效开发。
|
调度 Perl 容器
开源工具GPU Sharing:支持Kubernetes集群细粒度
问题背景 全球主要的容器集群服务厂商的Kubernetes服务都提供了Nvidia GPU容器调度能力,但是通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合,但是如果对于模型开发和模型预测的场景就会比较浪费。
17315 0
|
NoSQL 关系型数据库 MySQL
多机部署:打造内网服务器集群
在多机部署教程中,了解如何配置分布式应用如Laravel以使用Redis同步用户状态。关键步骤包括:修改MySQL的`bind-address`至内网IP,重启服务;同样修改Redis的`bind`,重启服务;以及调整Elasticsearch的`network.host`和`discovery.seed_hosts`,并重启。通过这些步骤,确保服务间能内网通信,实现多服务器状态同步。
399 2
|
算法 异构计算
推测解码:在不降低准确性的情况下将LLM推理速度提高2 - 3倍
在本篇文章我们将详细讨论推测解码,这是一种可以将LLM推理速度提高约2 - 3倍而不降低任何准确性的方法。我们还将会介绍推测解码代码实现,并看看它与原始transformer 实现相比到底能快多少。
525 10
在 Higress 中,您可以通过 EnvoyFilter 配置来修改请求中的 spanid
在 Higress 中,您可以通过 EnvoyFilter 配置来修改请求中的 spanid
183 1
|
Unix Linux Perl
sed删除指定行
sed删除指定行
1337 1
|
tengine 运维 Kubernetes
MSE | 阿里巴巴云原生网关三位一体的选择与实践
三位一体是阿里巴巴“自研”、“开源”、“商业化”采用的统一技术体系,希望以开源做内核、结合阿里巴巴内部丰富的业态和业务需求,通过自研进一步打磨软件的性能与高可用性,最终形成三位一体的旋转飞轮。
1661 100
MSE | 阿里巴巴云原生网关三位一体的选择与实践
|
Kubernetes API 调度
Container Runtime CDI与NRI介绍
CDI介绍什么是CDICDI(Container Device Interface)是Container Runtimes支持挂载第三方设备(比如:GPU、FPGA等)机制。它引入了设备作为资源的抽象概念,这类设备由一个完全限定的名称唯一指定,该名称由设备商ID,设备类别与一个设备类别下的一个唯一名称组成,格式如下:vendor.com/class=unique_name设备商ID和设备类型(ve
5574 1
Container Runtime CDI与NRI介绍