有没有一种方法可以使用VS Code在Kubernetes Pod中编辑代码?

时间:2019-10-29 04:06:53

标签: kubernetes visual-studio-code

通常,如果我有远程服务器,则可以使用ssh访问它,而VS Code提供了漂亮的扩展名,可以编辑和调试远程服务器的代码。但是,当我在Kuberneters中创建Pod时,我不能真正地放入容器中,因此无法在Pod或机器中编辑代码。 VSCode中的kuberneters插件并没有真正帮助,因为该插件用于部署代码。因此,我想知道是否可以使用VSCode在pod内编辑代码。

P.S。另外,如果有一种方法可以将其放入kuberneters的Pod中,那么也可以。

5 个答案:

答案 0 :(得分:3)

Kubernetes +远程开发扩展现在允许:

  • 附加到k8s吊舱
  • 打开远程文件夹
  • 远程执行
  • 在远程调试
  • 将终端集成到远程

vscode attaching to k8s pod

必须具备:

所需的vscode扩展范围:

答案 1 :(得分:2)

如果您需要“ kubectl edit xxx”才能使用VSCode。

解决方案是:

  1. 对于Linux:

    export EDITOR =代码--wait

  2. 对于Windows:

    设置EDITOR = code --wait

  3. 对于macOS:

    export EDITOR ='打开-a“ Visual Studio代码” --wait'

答案 2 :(得分:1)

好的Pod仅仅是kubernetes中的一个部署单元,这意味着您可以调整其中的容器以接收ssh连接。

让我们从获取允许ssh连接的docker镜像开始。 takenid图像对此非常好。使用它创建一个部署。

rastasheep/ubuntu-sshd:18.04

现在,我们创建一个LoadBalancer类型的服务,以便我们可以远程访问该pod。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: debugger
  name: debugger
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: debugger
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: debugger
    spec:
      containers:
      - name: debugger
        image: rastasheep/ubuntu-sshd:18.04
        imagePullPolicy: "Always"
      hostname: debugger
      restartPolicy: Always

最后,通过运行--- apiVersion: v1 kind: Service metadata: namespace: default labels: app: debugger name: debugger spec: type: LoadBalancer ports: - name: "22" port: 22 targetPort: 22 selector: app: debugger status: loadBalancer: {} 获取外部ip地址,并使用它来测试ssh连接kubectl get svc | grep debugger

注意。此docker映像的用户/密码分别为 root / root

更新 Nodeport示例。我对此进行了测试,并运行了ssh root@external_ip_address BUT ,但我必须启用防火墙规则才能使其正常运行。因此,我给您的ssh -p30036@ip命令就可以了。显然,运行kubernetes的机器不允许怪异端口上的入站流量。与他们交谈,以便他们可以为您提供一个外部IP地址或至少一个节点中的端口。

nmap

答案 3 :(得分:0)

有一个 Cloud Code extension可用于VS Code,可以满足您的目的。

您可以将其安装在Visual Studio Code中,以与Kubernetes集群进行交互。

它允许您创建minikube集群,Google GKE,Amazon EKS或Azure AKS并通过VS Code对其进行管理(您可以访问集群信息,从Pod中流式传输/查看日志并打开到容器的交互式终端)。 您还可以启用连续部署,这样它将连续监视文件中的更改,重建容器并将应用程序重新部署到群集。

Documentation

中对此有很好的解释

希望它对您的用例有用。

答案 4 :(得分:0)

如在其他一些答案中所述,您可以执行此操作,尽管它充满了危险,因为群集可以/将定期更换Pod,当群集这样做时,它将从配置中直接启动一个新的Pod,而该配置将不会变化。

下面的命令将带您进入pod的shell会话,如果您没有足够的监视/本地测试工具来重现问题,有时这可能对调试很有帮助。

kubectl --namespace=exmaple exec -it my-cool-pod-here -- /bin/bash 

注意您可以使用容器中安装的任何工具(python3,sh,bash等)替换命令。还知道默认情况下,像alpine这样的基本映像不会安装bash / shell。

这将在集群上正在运行的容器中打开bash会话,前提是您具有正确的k8s RBAC权限。

相关问题