跳转至

通过 NodePort 实现虚拟机的多终端 SSH 访问

本文将介绍如何通过 NodePort 从多个终端以 SSH 访问虚拟机。

现有访问方式的缺陷

  1. 虚拟机支持通过 VNC 或者 console 访问,但这两种访问方式都有一个弊端,无法多终端同时在线。
  2. 通过 NodePort 形式的 Service,可以帮助解决这个问题。

创建 service 的方式

  1. 通过容器管理页面

    • 选择目标访问的虚拟机所在集群页面创建服务(Service)
    • 选择访问类型为节点访问(NodePort)
    • 选择命名空间(虚拟机所在的 namespace)
    • 标签选择器填写 vm.kubevirt.io/name: you-vm-name
    • 端口配置:协议选择 TCP,端口名称自定义,服务端口、容器端口填写 22
  2. 创建成功后,就可以通过 ssh username@nodeip -p port 来访问虚拟机

通过 kubectl 创建 svc

  1. 编写 YAML 文件,示例如下:

    apiVersion: v1
    kind: Service
      metadata:
        name: test-ssh
    spec:
      ports:
      - name: tcp-ssh
        nodePort: 32090
        protocol: TCP
        // 22 端口,不要更改
        port: 22 
        targetPort: 22
      selector:
        // 虚拟机的 name
       vm.kubevirt.io/name: test-image-s3
      type: NodePort
    
  2. 执行以下命令:

    kubectl apply -f you-svc.yaml
    
  3. 创建成功后,就可以通过 ssh username@nodeip -p 32090 来访问虚拟机

评论