[英]equivalent of "minikube ssh" with docker-for-desktop Kubernetes node
我在 Mac 上使用 Docker,但目前仅将其用于其 Kube.netes 集群。 Kube.netes 集群的单个节点名为 docker -for-desktop 。
我目前正在阅读关于持久卷的 Kube.netes 教程 ( https://kube.netes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ ) 作为其中的一部分,我正在设置一个hostPath持久卷。 看起来它的工作方式是,您在 Kube.netes 节点本身上创建一个路径,您可以将其用作用于开发和测试目的的持久卷。
为此,本教程将指导您 SSH 进入您的 Kube.netes 节点本身并创建一个路径,然后可以将其转换为持久卷。 唯一的问题是,我不知道如何将 SSH 直接放入 Kube.netes 节点本身(不是容器)。 minikube 的等价物就是minikube ssh
。 我可以kubectl describe
节点,但我只得到一个内部 IP 地址,而不是外部地址。 所以我不知道如何在ssh
命令中解决它。
有任何想法吗?
OP 中的评论应该为此获得赞誉,但我会再次添加,以便我在几个月后发现它更容易:
docker run -it --rm --privileged --pid=host justincormack/nsenter1
来自https://github.com/justincormack/nsenter1/blob/master/README.md
...当您运行轻量级、容器优化的 Linux 发行版(例如 LinuxKit)时,这很有用...您正在使用 Docker for Mac 进行演示,例如,您的容器不是直接在主机上运行,而是在内部运行专为运行容器而构建的最小 Linux 操作系统虚拟机,即 LinuxKit。 但是作为一个轻量级环境,LinuxKit 没有运行 sshd,那么您如何访问 shell 以便您可以运行 nsenter 来检查作为 pid 1 运行的进程的命名空间?
我一直在寻找同样的东西。 我正在玩弄 PV/PVC,真的只是想“关注”正在存储的东西。
我正在运行 Kube.netes 1.22.5 和 Docker Desktop 4.5.0
获得对 docker-desktop 节点的访问权限
docker run -it --rm --privileged --pid=host justincormack/nsenter1
我的PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
namespace: my-namespace
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
查找目录 /mnt/data
有很多不同的位置,手动嗅探有点让人不知所措。 搜索只是搜索您要查找的内容:
搜索“数据”目录
find / -type d -name "data"
这将返回匹配列表。 我有很多结果。 但现在您可以在终端中搜索“mnt/data”,就可以了。
我的在/containers/services/docker/rootfs/mnt/data
我在 Docker 桌面上运行 k8s 时一直在寻找答案,然后我尝试了 docker docker ps
,令我惊讶的是,我的 pod 的容器就在那里。
所以我就像你对任何 docker 容器一样 ssh
$ docker exec -it 0b83055dac1b /bin/bash
更新:
如果节点是由 docker-machine 使用 VirtualBox 创建的,则类似于 minikube,使用命令:
docker-machine ssh default
如果您使用 MAC 的默认HyperKit
驱动程序,则没有像 VirtualBox 这样的 VM,但您应该能够使用以下命令打开 shell:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
原来的:
如果您可以直接访问节点和证书,则就像这样的命令一样简单:
ssh -i certificatename 10.0.0.1
或者
ssh -i certificatename docker@10.0.0.1
看看这篇文章。
如果您在云提供商中运行 Kubernetes,则应使用提供商工具来执行此操作。
一个示例是您将使用的 Google Cloud:
gcloud compute ssh <NODE_NAME> --zone <ZONE>
Azure 和 Aws 也有类似的选项,你也可以使用他们的门户。
另一种选择是在集群中使用 bastian\\helper 容器连接到节点,而无需设置网络权限,它适用于云或本地集群。
就像是:
kubectl run -it --rm aks-ssh --image=debian
这将运行一个带有 bash 的容器,然后您必须安装 ssh 客户端apt-get update && apt-get install openssh-client -y
将客户端证书复制到容器并 ssh 进入节点,如ssh -i id_rsa azureuser@10.240.0.4
.
AKS 文档中有一个很好的例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.