k8s系列 – client-go详细用法

栏目: Html5 · 发布时间: 5年前

内容简介:网上基本没有k8s client-go的使用资料,我实现了6个demo,项目地址:一共6个demo:最后一个完美实现了web ssh登录container调试的效果。

网上基本没有k8s client-go的使用资料,我实现了6个demo,项目地址: https://github.com/owenliang/k8s-client-go

一共6个demo:

  • demo1: 连接k8s
  • demo2: 解析yaml为json, 反序列化到deployment对象, 修改deployment.spec.replicas, 提交到k8s生效
  • demo3: 更新deployment.Spec.Template.Spec.Containers, 升级镜像版本, 提交到k8s生效
  • demo4: 更新deployment, 循环获取部署状态, 判定部署完成, 并获取最新pod列表与失败原因
  • demo5: xterm.js的基本用法, 为后续web ssh访问k8s container做铺垫
  • demo6: xterm.js+client-go remotecommand实现完美web ssh登录container

最后一个完美实现了web ssh登录container调试的效果。

demo6值得记录一下,免得时间久了容易忘记思路。

前端用xterm.js库,它只是模拟一个terminal在浏览器中,并没有通讯能力。

需要在前端建立websocket,连到自己开发的golang websocket服务端。

服务端会基于k8s的remotecommand包,建立与container的ssh长连接,所以服务端开发并不麻烦。

remotecommand包只需要我们提供3个回调,其中read是来获取terminal的输入,我们要做的就是读取websocket发来的数据,然后返回给read回调;write则是用来向terminal发送数据,我们要做的就是调用websocket把数据写到前端,然后前端把数据写给xterm即可;next是用来获取terminal的实际大小的,sshd服务端需要知道终端的大小,这样决定了它一行输出多少个字符就要输出一次换行符。所以,当浏览器窗口改变影响了terminal大小的时候,前端应该把最新的terminal大小发给服务端,然后在next回调中返回其大小。

xterm.js特别需要注意的就是需要apply一个addon,叫做fit。这个插件提供一个fit方法,调用它就可以让terminal的输出填满整个黑色视口,否则你可能会看到字符只输出了1/2的屏幕就换行了。

下面是真实的效果,和secureCrt等终端没什么区别,就是不带颜色而已。

k8s系列 – client-go详细用法

具体大家看代码吧。

参考:


以上所述就是小编给大家介绍的《k8s系列 – client-go详细用法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

基业长青

基业长青

[美] 詹姆斯·柯林斯、[美] 杰里·波勒斯 / 真如 / 中信出版社 / 2006-9 / 39.00元

如何建立一个伟大并长盛不衰的公司?有思想的人们早已经厌倦了“年度流行语”般稍纵即逝的管理概念,他们渴求获得能经受时间考验的管理思想。 柯林斯和波勒斯在斯坦福大学为期6年的研究项目中,选取了18个卓越非凡、长盛不衰的公司作了深入的研究,这些公司包括通用电气、3M、默克、沃尔玛、惠普、迪士尼等,它们平均拥有近百年的历史。是什么使这些公司不同于它们的竞争对手呢?他们拥有什么别的公司所不具有的法宝呢......一起来看看 《基业长青》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具