bbs*_*bbs 38 google-compute-engine docker google-cloud-platform kubernetes google-kubernetes-engine
我是Google云平台和Docker的新手,并设置了一个节点集群,制作了一个Dockerfile,用于复制repo并在公共端口上运行Clojure REPL.我可以从我的IDE连接到它并使用我的代码,真棒!
然而,REPL应该通过SSH进行隧道传输,但这是我的问题开始的地方.我找不到一个适合SSH的地方来更改Docker运行REPL的repo:
Adding or removing SSH keys for all of the instances in your project
部分,它也会给我一个公钥错误.我想通过SSH编辑源文件,但我需要访问docker代码库.我不知道该怎么办.
我知道这不是部署应用程序的典型方式,因此我甚至不确定多个节点是否可以使用修改后的docker代码库(节点是否以某种方式共享JVM?).
具体来说,我的问题是如何通过SSH连接到docker容器来访问代码库?
Ser*_*kov 60
Kubernetes 1.5.0的命令格式:
kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
Run Code Online (Sandbox Code Playgroud)
Yos*_*yts 20
列表实例:
gcloud compute instances list
Run Code Online (Sandbox Code Playgroud)
SSH到实例:
gcloud compute ssh <instance_name> --zone=<instance_zone>
Run Code Online (Sandbox Code Playgroud)
在实例中,列出正在运行的进程及其容器ID:
sudo docker ps -a
Run Code Online (Sandbox Code Playgroud)
附加到容器:
sudo docker exec -it <container_id> bash
Run Code Online (Sandbox Code Playgroud)
Nit*_*tin 15
通过exec命令附加到容器的最佳方法.
附加到docker运行容器
docker exec -it YOUR_CONTAINER_ID bash
附加到Kubernetes运行容器.
kubectl exec -it YOUR_CONTAINER/POD_NAME bash
附加到给定命名空间中运行容器的Kubernetes.
kubectl exec -it YOUR_CONTAINER/POD_NAME -n YOUR_NAMESPACE bash
如果pod在您当前的名称空间中,请获取pod列表:
kubectl get pods
Run Code Online (Sandbox Code Playgroud)
选择一个豆荚。在上面执行bash会话?:
kubectl exec -it [POD_NAME] -- /bin/bash
Run Code Online (Sandbox Code Playgroud)
或者,在其他名称空间中找到所需的Pod:
kubectl get pods --all-namespaces
Run Code Online (Sandbox Code Playgroud)
选择一个pod并在其上执行bash会话?:
kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash
Run Code Online (Sandbox Code Playgroud)
现有的答案很好,只是想贡献一个非常方便的命令,列出所有 pod 和容器,这样您就可以选择一个插入到命令中kubectl exec
。
kubectl get pods -o=custom-columns=POD:.metadata.name,CONTAINERS:.spec.containers[*].name
Run Code Online (Sandbox Code Playgroud)
给出这样的输出
POD CONTAINERS
pod-1 service-1,service-2
pod-2 service-1,service-2
pod-3 service-3
pod-4 service-3
Run Code Online (Sandbox Code Playgroud)
然后只需插入名称即可 ssh 进入任何这些容器
kubectl exec -it POD -c CONTAINER /bin/sh
Run Code Online (Sandbox Code Playgroud)
例如service-2
在pod-2
kubectl exec -it pod-2 -c service-2 /bin/sh
Run Code Online (Sandbox Code Playgroud)
注意:如有必要,请添加-n namespace
到上述任何命令中以指定命名空间。
我找不到合适的SSH位置来更改Docker在其上运行REPL的存储库
创建集群时,您需要在Google云项目中配置许多节点VM。如果您查看https://console.cloud.google.com/compute/instances,您应该会看到它们,并且每个人都有一个外部IP地址,您可以使用该地址登录。然后创建到节点VM的ssh隧道,该节点将本地端口转发到Pod IP地址。
请注意,如果您正在运行Clojure应用程序的多个副本,则必须分别连接到每个副本以更新该应用程序。
归档时间: |
|
查看次数: |
28523 次 |
最近记录: |