k8s系列 – client-go详细用法

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

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

查看所有标签

猜你喜欢:

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

免费

免费

[美] 克里斯·安德森 / 蒋旭峰、冯斌、璩静 / 中信出版社 / 2009-9 / 39.00

在《免费:商业的未来 》这本书,克里斯·安德森认为,新型的“免费”并不是一种左口袋出、右口袋进的营销策略,而是一种把货物和服务的成本压低到零的新型卓越能力。在上世纪“免费”是一种强有力的推销手段,而在21世纪它已经成为一种全新的经济模式。 究竟什么是免费商业模式?根据克里斯·安德森的说法,这种新型的“免费”商业模式是一种建立在以电脑字节为基础上的经济学,而非过去建立在物理原子基础上的经济学。......一起来看看 《免费》 这本书的介绍吧!

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

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

在线XML、JSON转换工具