k8s web terminal的实现
来源:互联网 发布:好家长软件 编辑:程序博客网 时间:2024/05/20 04:51
web terminal可以让我们更方便的访问container,执行shell命令,提高工作效率
k8s本身实际上已经封装了docker的terminal api只需要很简单的操作就可以实现一个terminal,获取输入返回输出
req := restclient.Post().Resource("pods").Name(podname).Namespace(namespace).SubResource("exec").Param("container", container).Param("stdin", "true").Param("stdout", "true").Param("stderr", "true").Param("command", "/bin/sh").Param("tty", "true")req.VersionedParams(&api.PodExecOptions{Container: container,Command: []string{"sh"},Stdin: true,Stdout: true,Stderr: true,TTY: true,},api.ParameterCodec,)executor, err := remotecommand.NewExecutor(config, http.MethodPost, req.URL(),)err = executor.Stream(remotecommand.StreamOptions{SupportedProtocols: remotecommandconsts.SupportedStreamingProtocols,Stdin: r,Stdout: w,Stderr: os.Stderr,Tty: true,TerminalSizeQueue: t,})
1.首先我们需要获取一个restclient restclient的具体概念请参照我之前的文章
2.通过restclient提交信息指定我们想要执行命令的container,实际上就是一个HTTP request
3.设置request的参数。
4.NewExecutor函数将一个普通的request升级为流输出,使用了Google的spdy协议,在返回时使用了chunk头保证长连接
5.发起请求,进行交互
6.在实际使用为了和实际使用界面的大小相匹配,需要监听窗口大小变化,每当变化时由queue的next方法返回。
7.如果为了实现一个简单的命令将输入输出设置为系统的输入输出即可,如果需要实现web terminal,可以使用xterm.js 与ws,将输入输出写入到websocket流中即可,还是很简单的
阅读全文
0 0
- k8s web terminal的实现
- 实现k8s容器的终端登录
- docker k8s二次开发(二)api的实现
- Python3 for terminal IDE 的实现
- open-falcon实现对k8s集群的监控
- [k8s]k8s的command和args
- k8s的keepalived学习
- K8S的volumes
- K8S 的搭建步骤
- k8s
- java 实现 Terminal
- DCOS之K8S的volumes
- DCOS之k8s的secret
- 教你如何在中国区加速部署k8s,且实现自定义设置拥有k8s镜像的仓库与其命名空间
- 基于DevOps、微服务以及k8s的高可用架构探索与实现
- 更改terminal的端口
- terminal的一些定义
- windows上的Terminal
- 【图像处理】MATLAB:几何变换与图像配准
- @SuppressWarnings注解用法详解(转)
- 认识Hive
- 拓扑排序应用
- MongoDB集群搭建的整理及出错整理
- k8s web terminal的实现
- Prezi Next(演示文稿制作软件)v1.6.1中文免费版下载附使用方法
- 线程简介
- linq应用
- Java基础入门笔记-使用变量并打印
- Ubuntu安装libevent(libevent-2.0.21-stable)及各种出错的解决方案
- js仿天猫换一换图片墙~~
- Hive搭建(认识Hive)
- javascript执行上下文、作用域与闭包(第一篇)---执行上下文