通常,如果我有远程服务器,则可以使用ssh访问它,而VS Code提供了漂亮的扩展名,可以编辑和调试远程服务器的代码。但是,当我在Kuberneters中创建Pod时,我不能真正地放入容器中,因此无法在Pod或机器中编辑代码。 VSCode中的kuberneters插件并没有真正帮助,因为该插件用于部署代码。因此,我想知道是否可以使用VSCode在pod内编辑代码。
P.S。另外,如果有一种方法可以将其放入kuberneters的Pod中,那么也可以。
答案 0 :(得分:3)
Kubernetes +远程开发扩展现在允许:
必须具备:
所需的vscode扩展范围:
答案 1 :(得分:2)
如果您需要“ kubectl edit xxx”才能使用VSCode。
解决方案是:
对于Linux:
export EDITOR =代码--wait
对于Windows:
设置EDITOR = code --wait
对于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中流式传输/查看日志并打开到容器的交互式终端)。 您还可以启用连续部署,这样它将连续监视文件中的更改,重建容器并将应用程序重新部署到群集。
中对此有很好的解释希望它对您的用例有用。
答案 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权限。