【问题标题】:SSH into a DC/OS created public agent node to deploy a Docker container?SSH 到 DC/OS 创建的公共代理节点以部署 Docker 容器?
【发布时间】:2017-06-13 15:17:15
【问题描述】:

问:我希望通过 SSH 连接到 DC/OS 公共代理以使用 Docker 凭据挂载我的文件共享,这样我就可以通过 Marathon 部署 Docker。 我怎样才能直接 ssh 到这个代理节点?不通过主节点?


背景故事:我在 Azure 上安装了原版 DC/OS。我配置了两个节点(一个主节点和一个代理)。我在master上安装了Marathon。

首先,我尝试通过 Marathon 从我在 Azure 容器注册表上创建的映像/存储库部署一个容器。由于CPU资源不满足而失败;这在一定程度上是可以理解的,因为 Marathon 似乎占用了主节点的整个 CPU。但我不知道如何让 Marathon 注意到周围还有另一个节点——公共代理节点。公共代理节点没有运行。

第二,我想我可以使用 DC/OS 层本身提供的“服务”接口(我认为这只是马拉松或类似的 UI 层)。

这一次,它准确地识别了代理节点,并且它上面有可用的计算。但要让它从我的私有注册表中提取,我需要将我的 Docker 凭据放在这个节点上。这就是我卡住的地方。无法通过 SSH 连接到代理节点以挂载共享存储(已挂载在主节点上)。由于此节点是通过虚拟机规模集配置的,我真的无法找出正确的入站 NAT 规则和网络安全配置来映射到此节点并为我提供一个可靠的 FQDN 和端口,以允许我通过 SSH 进入并运行cifs。老实说,DC/OS 应该为我解决这个问题,因为我正在做最标准的事情。

我试过了,但这还不够/不正确(即使它创建了规则):

az network lb inbound-nat-rule create --resource-group production --lb-name <lb-name> --name NATRule --protocol TCP --frontend-port 2200 --backend-port 22

(来自微软的所有精心制作的 VMSS 视频都是针对旧界面的,以及端口范围映射的这种想法,我似乎无法从 CLI 中弄清楚。另外,当涉及到入站时,门户仍在进行中NAT 规则)

我是 Azure 和 DC/OS 领域的新手(从 AWS 迁移资源),因此我将不胜感激。


更新:结果我尝试了预览版 DC/OS on Azure 服务,而不是 DC/OS on Azure Container Service,它仍然有点不稳定。通过主 DC/OS 而不是 Marathon 上的“服务”界面启动容器。

【问题讨论】:

    标签: azure docker marathon dcos


    【解决方案1】:

    我真的不知道正确的入站 NAT 规则和网络 映射到此节点的安全配置并为我提供可靠的 FQDN 和端口,这将允许我通过 SSH 进入并运行 cifs。

    目前,我们可以通过 CLI 2.0 将入站规则添加到 VMss 负载均衡器,但我们不能使用 CLI 2.0 来分隔目标 NIC,因此我们不能使用 NAT 对 VMss 实例进行 ssh。

    如果您在此 VMSS 中只有 一个 实例,我们可以添加 负载均衡器规则 对其进行 ssh。添加22端口的探测,添加22的负载均衡规则,之后我们就可以ssh到22端口的VMSS公网IP了。

    另一种方式,登录DCOS节点,我们可以通过master ssh到其他节点。例如,我们可以 ssh 到 master,然后 ssh 到公共代理。 这里有一个如何通过master登录DCOS代理的案例,请参考it

    之后,我们可以按照article 将 Azure 文件共享挂载到您的集群节点。

    顺便说一句,我们可以通过 DC/OS UI 创建容器,请参考it

    【讨论】:

    • 您可以在 CLI 中使用“az network lb inbound-nat-pool update”修改用于规模集的 NAT 规则
    • 非常感谢您周到的回复,@Jason。因此,通过 DC/OS UI 创建容器再次由于相同的insufficient resources 原因而失败。我按照您的链接逐字执行所有步骤。
    • @VarunArora 你能告诉我你关于 CPU 的 docker 镜像设置吗?
    • 当然@Jason,这里:"cpus": 1, "mem": 64, "disk": 0, "instances": 1,
    • @VarunArora 据我所知,"cpus": 1 表示 100% CPU,请尝试 0.7 或更低。
    【解决方案2】:

    您能否描述一下您想要实现的目标。你确实描述了你所做的一切,这一切似乎都相当。这里似乎有两件事:

    1) 将 ACR 与 DC/OS 一起使用 - https://docs.microsoft.com/en-us/azure/container-service/container-service-dcos-acr

    2) 提供对公共容器的访问 - 请参阅 https://docs.microsoft.com/en-us/azure/container-service/container-service-enable-public-access

    如果这些不能满足您的需求,请编辑您的问题以描述您想要实现的目标。

    【讨论】:

    • 非常感谢@rgardler。我更新了问题。关于链接 (1),是的,我可以在主节点上挂载文件共享。我想在公共代理上做。对于链接 (2),它提供对容器应用程序端口的访问权限,而不是代理节点 VM 本身。我需要通过 SSH 连接到代理以挂载文件共享,这将允许我在那里启动容器。 (与我的问题无关,但我正在尝试根据您的链接(2)为 Solr 容器打开端口 8983,尽管按照 DC/OS 服务容器上的步骤公开了带有 hostPort 的端口,但它不是工作)
    • 我接受 8983 的评论,即公开一个端口。更新完成需要一段时间,但它最终会起作用。感谢那!我可以通过 22 端口 SSH 到 VM 吗?
    猜你喜欢
    • 2021-06-26
    • 2023-03-08
    • 1970-01-01
    • 2020-01-26
    • 2019-03-01
    • 1970-01-01
    • 2019-01-30
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多