k8s的容器的webssh实现


Vite2.x + Vue3.x + Xtermjs4

相关信息

编程语言:TypeScript 4.x + JavaScript
构建工具:Vite 2.x
前端框架:Vue 3.x
路由工具:Vue Router 4.x
状态管理:Vuex 4.x
UI 框架:Element Plus
CSS 预编译:Stylus / Sass / Less
HTTP 工具:Axios

安装依赖

npm installor

启动项目

npm run dev

项目打包

npm run build

功能完成

2021/6/8
WEB SSH
具体代码在:https://github.com/haozheyu/k8sResourceDisplay
排坑不易,大家给给⭐※⭐,好让我在排坑的路上乐此不疲

<template>
  <div ref="terminal" id="terminal"></div>
</template>

<script>

import {defineComponent, reactive, toRefs, onMounted, ref, markRaw, onBeforeUnmount, onUnmounted} from 'vue'
import { useRouter } from 'vue-router'
import { Terminal } from 'xterm';
import { FitAddon  } from 'xterm-addon-fit';
import 'xterm/css/xterm.css'
import { ElMessage } from 'element-plus'

export default defineComponent({
  name: 'Xterm',
  setup(){
    //实例化路由
    const shellWs = ref(null)
    const rows = ref(null)
    const cols = ref(null)

    const term = new Terminal({
      rendererType: 'canvas',
      cursorBlink: true,
      convertEol: true,
      scrollback: 800,
      row: 70,
      theme: {
        foreground: 'white',
        background: '#181E29'
      }
    })
    const fitAddon = new FitAddon();
    // canvas背景全屏
    term.loadAddon(fitAddon);
    fitAddon.fit();
    const router = useRouter();
    const podName = router.currentRoute.value.query.podName
    const podNamespace = router.currentRoute.value.query.podNamespace
    const containerName = router.currentRoute.value.query.containerName
    const SHELL = router.currentRoute.value.query.shell
    const querystring = "ws://localhost:8080/resource/websocket?" + "podNs="+ podNamespace + "&podName=" + podName + "&containerName=" + containerName + "&shell=" + SHELL
    const ws = new WebSocket(querystring)
    onMounted(()=>{
      term.open(document.getElementById('terminal'));  //绑定dom节点
      term.focus() // 取得输入焦点
      term.writeln('Connecting...');  // 写一行测试
      ws.onclose = function (e) {
        ElMessage.warning({
          message: '链接已关闭',
          type: 'warning',
          center: true,
        });
      }
      ws.onmessage = function (e) { // 服务端ssh输出, 写到web shell展示
        term.write(e.data)
      }
      ws.onerror = function (e) {
        ElMessage.error({
          message: '请更换,shell环境再试一下',
          type: 'error',
          center: true,
        });
      }
      // 当浏览器窗口变化时, 重新适配终端
      window.addEventListener("resize", function () {
        fitAddon.fit();
        // 把web终端的尺寸term.rows和term.cols发给服务端, 通知sshd调整输出宽度
        var msg = {type: "resize", rows: term.rows, cols: term.cols}
        ws.send(JSON.stringify(msg))
      })
      // 当向web终端敲入字符时候的回调
      // term.onKey(e => {  //给后端发送数据
      //   // 写给服务端, 由服务端发给container
      //   console.log(e.key)
      //   var msg = {type: "input", input: e.key }
      //   ws.send(JSON.stringify(msg))
      // })
      // 支持输入与粘贴方法
      term.onData(function(input) {
        // 写给服务端, 由服务端发给container
        var msg = {type: "input", input: input}
        ws.send(JSON.stringify(msg))
      })
    })
    onUnmounted(()=>{
      ws.close()
    })
    return {
      shellWs, term, rows, cols
    }
  },
})
</script>

<style>

</style>

在这里插入图片描述

Kubernetes(K8s)是一个用于自动化容器部署、扩展和管理的开源平台。在K8s的不同版本中,v1.23.6是较新的版本。下面是关于如何进行K8s v1.23.6的二进制部署的简要步骤。 1. 准备服务器:首先需要准备一台或多台服务器,最好是基于Linux操作系统的服务器。确保服务器可通过SSH远程访问,并且具有足够的计算和存储资源来运行Kubernetes集群。 2. 安装Docker:Kubernetes使用Docker作为容器运行时环境。在服务器上安装Docker,并确保其正确配置和运行。 3. 下载Kubernetes二进制文件:在官方Kubernetes GitHub页面上,找到v1.23.6的版本发布并下载相关的二进制文件。 4. 配置Master节点:选择其中一台服务器作为Master节点,并在此节点上进行Kubernetes的初始化配置。通过执行"kubeadm init"命令,可以完成对Master节点的初始化。 5. 配置Worker节点:选择剩余的服务器作为Worker节点,并通过执行"kubeadm join"命令,将这些节点加入到Kubernetes集群中。 6. 安装网络插件:Kubernetes集群需要一个网络插件来实现容器间的网络通信。根据自己的需求,选择并安装合适的网络插件,如Calico、Flannel等。 7. 部署Dashboard(可选):Dashboard提供了一个Web界面来管理和监控Kubernetes集群。根据需求,可以选择安装并配置Dashboard。 通过以上步骤,可以成功完成Kubernetes v1.23.6的二进制部署。注意,这只是一个简要的步骤概述,具体的部署过程可能会因环境和需求而有所不同。在进行部署之前,建议仔细阅读文档和相关教程,以确保正确理解和执行每个步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值