CN112367328B - 基于websocket进入Kubernetes集群容器的方法 - Google Patents
基于websocket进入Kubernetes集群容器的方法 Download PDFInfo
- Publication number
- CN112367328B CN112367328B CN202011269086.XA CN202011269086A CN112367328B CN 112367328 B CN112367328 B CN 112367328B CN 202011269086 A CN202011269086 A CN 202011269086A CN 112367328 B CN112367328 B CN 112367328B
- Authority
- CN
- China
- Prior art keywords
- container
- websocket
- console
- cluster
- cloud platform
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Abstract
本发明公开了基于websocket进入Kubernetes集群容器的方法,包括建立客户端和云平台的websocket连接;收集容器相关参数;动态拼接url并发送请求;云平台解析并验证相关参数;执行容器控制台初始命令;在容器控制台执行相关操作;退出容器的控制台,关闭websocket连接,回收资源。本发明通过动态拼接url,请求该url的方式进入容器,用户不再需要打开cmd控制台,仅需要通过点击web页面中需要进入的容器名,即可进入到该容器内部,大大方便了用户的使用,对集群中容器监控、管理、排错更加方便和快捷,同时可以满足用户对界面的个性化需求。
Description
技术领域
本发明涉及交互技术和容器技术领域,具体的说,是一种基于websocket进入Kubernetes集群容器的方法。
背景技术
随着云计算技术的不断发展与实施,云计算的基础支撑技术Kubernetes及容器技术得到了长足的发展及运用。在管理云平台Kubernetes的集群中的应用时,经常要能够掌握该容器内应用的详情,需要进入Kubernetes集群中某个容器中查看应用运行的具体情形。因此,在容器化的平台上可以通过web控制台直接安全地进入容器并进行操作是一个普遍且迫切的需求。能够实现的核心是客户端能够通过长连接与容器进行连续不断的通信,并进入到容器的控制台中,在容器控制台执行命令,并通过长连接向客户端返回执行结果。
目前,进入容器的主要的方式有两种,其一是直接通过原始的命令行控制台方式,在其中输入Kubernetes命令进入容器,其二是通过浏览器,使用https拼接url的方法进入容器。原生的方法需要另外打开命令行控制台,不仅不利于管理和操作,还需要学习Kubernetes的相关命令,学习和使用成本也很高。而通过浏览器进入容器进行操作的方法,该方法是先基于https进行通信,将权限认证信息写入数据库,通过数据库的认证通过之后,使用websocket调用Kubernetes的api service,后台返回连接到容器的静态url地址,再通过该url,然后浏览器通过websocket连接该url地址进入容器。由于该方法使用https连接,https会不断地发起与断开,导致过多次请求与断开,造成大量的网络浪费,使得网络的负载过大且浪费网络资源,同时请求必须由客户端发起,不能全双工通信,容器也无法实时给客户端推送消息,实时性很差。并且它的静态url只能使用一次,因此,刷新或者重新点击时,会失效,不方便用户使用。
发明内容
本发明的目的在于提供一种基于websocket进入Kubernetes集群容器的方法,用于解决现有技术中进入Kubernetes容器内部不方便以及静态url只能使用一次不能重复使用的问题。
本发明通过下述技术方案解决上述问题:
一种基于websocket进入Kubernetes集群容器的方法,包括:
步骤S1:建立客户端和云平台的websocket连接;
步骤S2:普通用户在客户端的web页面上选择他想进入的容器后,收集容器参数,包括容器所在的集群、空间、pod以及容器名,将收集的容器参数动态拼接为url的路径参数,并通过websocket协议请求该url,将对应的集群,空间、pod、容器以及需要执行的初始命令信息传递给云平台;
步骤S3:云平台解析并验证容器参数,主要是通过集群标识符信息,获取到连接该集群的配置信息,并通过集群连接配置连接到k8s的该集群,判断集群下是否有对应容器所在的空间、该空间下是否有相应的pod以及该pod下是否有该容器,将验证结果传递给客户端展示;
步骤S4:用户在web控制台输入需要在容器控制台中执行的命令,再通过websocket连接传递命令到云平台,再传递到容器的控制台执行该命令,将执行结果返回给web控制台,展示给用户;
步骤S5:当容器的控制台执行退出命令时,首先退出容器的控制台,然后关闭与客户端的websocket连接,回收相应的资源。
所述步骤S1具体为:
客户端首先建立与云平台的网络连接,发送的请求中包含Upgrade、Sec-WebSocket-Key、Sec-WebSocket-Protocol、Sec-WebSocket-Version请求建立WebSocket连接的特有头字段;
云平台收到该请求之后在响应报文中的状态行中返回101Switching Protocols,用于表明协议已经转换为WebSocket;
采用WebSocket协议进行通信。
所述url的格式为:
/websocket/cluster/{cluster_id}/namespace/{namespace_name}/pod/{pod_name}/container/{container_name}/。
本发明可实现直接在web界面为用户提供更加人性化、更方便使用的进入云平台容器的方案,用户仅需在当前容器界面中,调入控制台页面,即可立即进入该容器中,不再需要另外打开命令行界面进行操作,大大方便了用户的操作和使用;并且可以个性化该web界面,满足用户的实际需求,提高用户的使用感及满意度。相比于通过websocket调用一下k8s的api service,返回连接的静态url地址,然后浏览器通过连接进入容器的方法,本方法能够双向通信,能够向客户端推送,不存在使用后端返回的静态url,解决了url只能使用一次的问题。
本发明与现有技术相比,具有以下优点及有益效果:
本发明通过动态拼接url,然后web页面发送websocket请求该动态的url的方式进入容器,用户不再需要打开cmd控制台,仅需要通过点击web页面中需要进入的容器名,即可进入到该容器内部,大大方便了用户的使用,对集群中容器监控、管理、排错更加方便和快捷,同时可以满足用户对界面的个性化需求。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
结合附图1所示,一种基于websocket进入kubernetes集群容器的方法,包括:
1.建立客户端和平台端的websocket连接:客户端首先建立与云平台的网络连接,发送的请求中包含Upgrade、Sec-WebSocket-Key、Sec-WebSocket-Protocol、Sec-WebSocket-Version请求建立WebSocket连接的特有头字段,云平台收到该请求之后会在响应报文中的状态行中返回101Switching Protocols,表明协议已经转换为WebSocket,之后即通过WebSocket协议进行通信。
2.传递并解析参数:
收集容器相关参数:用户在客户端的web页面上选择他想进入的容器后,收集该容器的相关参数,主要包括容器所在的集群、空间、pod以及容器名,以及容器其他参数。
动态拼接url并发送请求:将收集到的容器参数动态拼接为url的路径参数,url的格式为:
/websocket/cluster/{cluster_id}/namespace/{namespace_name}/pod/{pod_name}/container/{container_name}/,并通过websocket协议请求该url,将相关集群,空间、pod、容器、以及需要执行的初始命令信息传递给后端。
3.云平台解析并验证相关参数:云平台通过传入的参数,解析出容器的相关参数,判断集群参数是否合法,如果不合法,则结束;如果合法,读取该集群的连接配置信息,并通过集群连接配置连接到k8s的该集群,并判断集群下是否有容器所在的空间,若没有,则结束,若有再判断该空间下是否有相应的pod,若没有则结束,如有再判断pod下是否有该容器,若没有则结束,若有,将验证结果传递给客户端展示。
4.执行容器控制台初始命令:通过了解析判断的过程,即可在云平台中找到该容器,通过对该容器执行/bin/sh初始命令,即可进入了容器的控制台,就进入了容器的内部,以方便执行后续需要执行的命令。
5.在容器控制台执行相关操作:用户在web控制台输入需要在容器控制台中执行的命令,再通过websocket连接传递命令到云平台,再传递到容器的控制台执行该命令,将执行结果返回给web控制台,展示给用户。在此过程中,用户传入的命令,不再有k8s的kubectl相关命令,大大降低了用户的学习和使用成本。
6.断开websocket连接:当控制台执行退出命令时,首先退出容器的控制台,然后关闭与客户端的websocket连接,回收相应的资源。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种基于websocket进入Kubernetes集群容器的方法,其特征在于,包括:
步骤S1:建立客户端和云平台的websocket连接;
步骤S2:普通用户在客户端的web页面上选择想进入的容器后,收集容器参数,包括容器所在的集群、空间、pod以及容器名,将收集的容器参数动态拼接为url的路径参数,并通过websocket协议请求该url,将对应的集群、空间、pod、容器以及需要执行的初始命令信息传递给云平台;所述url的格式为:
/websocket/cluster/{cluster_id}/namespace/{namespace_name}/pod/{pod_name}/container/{container_name}/;
步骤S3:云平台解析并验证容器参数,判断集群下是否有对应容器所在的空间、该空间下是否有相应的pod以及该pod下是否有该容器,将验证结果传递给客户端展示;
步骤S4:用户在web控制台输入需要在容器控制台中执行的命令,再通过websocket连接传递命令到云平台,再传递到容器的控制台执行该命令,将执行结果返回给web控制台,展示给用户;
步骤S5:当容器的控制台执行退出命令时,首先退出容器的控制台,然后关闭与客户端的websocket连接,回收相应的资源。
2.根据权利要求1所述的基于websocket进入Kubernetes集群容器的方法,其特征在于,所述步骤S1具体为:
客户端首先建立与云平台的网络连接,发送的请求中包含Upgrade、Sec-WebSocket-Key、Sec-WebSocket-Protocol、Sec-WebSocket-Version请求建立WebSocket连接的特有头字段;
云平台收到该请求之后在响应报文中的状态行中返回101 Switching Protocols,用于表明协议已经转换为WebSocket;
采用WebSocket协议进行通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011269086.XA CN112367328B (zh) | 2020-11-13 | 2020-11-13 | 基于websocket进入Kubernetes集群容器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011269086.XA CN112367328B (zh) | 2020-11-13 | 2020-11-13 | 基于websocket进入Kubernetes集群容器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112367328A CN112367328A (zh) | 2021-02-12 |
CN112367328B true CN112367328B (zh) | 2022-01-04 |
Family
ID=74515559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011269086.XA Active CN112367328B (zh) | 2020-11-13 | 2020-11-13 | 基于websocket进入Kubernetes集群容器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112367328B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978944A (zh) * | 2016-04-26 | 2016-09-28 | 乐视控股(北京)有限公司 | 对象存储方法和装置 |
CN107291890A (zh) * | 2017-06-21 | 2017-10-24 | 成都知道创宇信息技术有限公司 | 基于浏览器书签与搜索引擎相结合的搜索方法 |
CN111181943A (zh) * | 2019-12-24 | 2020-05-19 | 平安医疗健康管理股份有限公司 | 基于业务中台的服务交互方法、装置、计算机设备及计算机存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216843B2 (en) * | 2013-03-08 | 2019-02-26 | Christopher Balz | Method and computer readable medium for providing, via conventional web browsing, browsing capability between remote/virtual windows and from Remote/Virtual windows to conventional hypertext documents |
US10574529B2 (en) * | 2016-01-11 | 2020-02-25 | Equinix, Inc. | Defining conditional triggers for issuing data center asset information |
US11463330B2 (en) * | 2018-03-15 | 2022-10-04 | Grant Viklund | System and methods for scalable cloud-based platform and related applications |
CN109067914B (zh) * | 2018-09-20 | 2019-12-13 | 星环信息科技(上海)有限公司 | Web服务的代理方法、装置、设备及存储介质 |
CN109684036B (zh) * | 2018-12-17 | 2021-08-10 | 武汉烽火信息集成技术有限公司 | 一种容器集群管理方法、存储介质、电子设备及系统 |
CN109743261B (zh) * | 2019-01-07 | 2020-10-30 | 中国人民解放军国防科技大学 | 一种基于sdn的容器网络资源调度方法 |
CN110134529A (zh) * | 2019-04-17 | 2019-08-16 | 重庆天蓬网络有限公司 | 一种基于浏览器进入容器能力的解决方法 |
KR102130005B1 (ko) * | 2020-04-17 | 2020-07-03 | 국방과학연구소 | 응용프로그램 간 데이터 전송 지원 방법 및 이를 위한 서버 |
CN111756804B (zh) * | 2020-05-27 | 2022-05-31 | 苏州浪潮智能科技有限公司 | 一种配置web请求的方法及装置 |
CN111767117B (zh) * | 2020-06-22 | 2024-02-20 | 中兴智慧(北京)技术有限公司 | 基于应用容器的移动端bi中间件技术 |
-
2020
- 2020-11-13 CN CN202011269086.XA patent/CN112367328B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978944A (zh) * | 2016-04-26 | 2016-09-28 | 乐视控股(北京)有限公司 | 对象存储方法和装置 |
CN107291890A (zh) * | 2017-06-21 | 2017-10-24 | 成都知道创宇信息技术有限公司 | 基于浏览器书签与搜索引擎相结合的搜索方法 |
CN111181943A (zh) * | 2019-12-24 | 2020-05-19 | 平安医疗健康管理股份有限公司 | 基于业务中台的服务交互方法、装置、计算机设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112367328A (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9449009B2 (en) | System and method for displaying and operating multiple layered item list in web browser with support of concurrent users | |
US7571447B2 (en) | Loose coupling of web services | |
US7571208B2 (en) | Creating proxies from service description metadata at runtime | |
TWI384378B (zh) | 網頁應用程式執行方法 | |
US20110093801A1 (en) | Application extension system, extension method, extension program | |
CA2462271A1 (en) | Methods for distributed program execution with file-type association in a client-server network | |
KR101602099B1 (ko) | 사물인터넷에서 레스트 기반의 서비스 연동 시스템 및 그 방법 | |
US11223686B2 (en) | Transport channel via web socket for OData | |
CN105763619A (zh) | 客户端与服务端进行通讯的方法及装置 | |
CN102752388A (zh) | 基于浏览器的交互系统、方法、浏览器和云端服务器 | |
US20130007107A1 (en) | Rendering components within different browser environments | |
CN109740096B (zh) | 一种实时预览的实现方法、装置、系统及存储介质 | |
US20140095714A1 (en) | Method and system for displaying and operating multi-layers item list in Web-Browser with supporting of concurrent Multi-Users | |
CN113687888A (zh) | 在Linux系统上兼容运行Android应用的文件分享方法 | |
US6658466B1 (en) | Method and apparatus for integrating remote human interactive assistance function into software systems | |
US11797271B2 (en) | Dynamic web-based integrated development environment | |
KR20110065448A (ko) | 메시지 처리 파이프라인 구성 | |
Mesnil | Mobile and Web Messaging: Messaging Protocols for Web and Mobile Devices | |
US20170078449A1 (en) | Shared simultaneous access to a single instance of a remotely executing application | |
CN112367328B (zh) | 基于websocket进入Kubernetes集群容器的方法 | |
CN109543119A (zh) | 页面预览系统及方法 | |
JPH1115723A (ja) | マルチメディアデータ供給方法及びマルチメディアデータサーバ | |
CN113806008A (zh) | 集群访问方法、装置、电子设备及可读存储介质 | |
JP2004246747A (ja) | 既存サービスのラッピング方法および装置 | |
WO2023208132A1 (zh) | Api转换系统及其访问请求处理方法、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |