k8s系列 – client-go详细用法

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

内容简介:网上基本没有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详细用法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

计算机视觉

计算机视觉

Richard Szeliski / 艾海舟、兴军亮 / 清华大学出版社 / 2012-1 / 109.00元

《计算机视觉——算法与应用》探索了用于分析和解释图像的各种常用技术,描述了具有一定挑战性的视觉应用方面的成功实例,兼顾专业的医学成像和图像编辑与交织之类有趣的大众应用,以便学生能够将其应用于自己的照片和视频,从中获得成就感和乐趣。本书从科学的角度介绍基本的视觉问题,将成像过程的物理模型公式化,然后在此基础上生成对场景的逼真描述。作者还运用统计模型来分析和运用严格的工程方法来解决这些问题。 本......一起来看看 《计算机视觉》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具