gpt4 book ai didi

docker - 将条目添加到容器/etc//hosts 使用 pod1.yaml 或 pod1.json 启动 pod 时

转载 作者:行者123 更新时间:2023-12-02 01:31:51 25 4
gpt4 key购买 nike

我希望这里的每个人都做得很好。我正在尝试找到一种在启动 pod 时将条目添加到容器/etc/hosts 文件的方法。我只是想知道是否有任何选项/参数可以在我的“pod1.json”中提及,它在创建容器时将条目添加到/etc/hosts 中。类似于“--add-host node1.example.com:${node1ip}”之类的东西,其作用与 docker 相同,如下所示。

docker run \
--name mongo \
-v /home/core/mongo-files/data:/data/db \
-v /home/core/mongo-files:/opt/keyfile \
--hostname="node1.example.com" \
--add-host node1.example.com:${node1ip} \
--add-host node2.example.com:${node2ip} \
--add-host node3.example.com:${node3ip} \
-p 27017:27017 -d mongo:2.6.5 \
--smallfiles \
--keyFile /opt/keyfile/mongodb-keyfile \
--replSet "rs0"

任何指针都受到高度赞赏。谢谢你。

问候,
Aj

最佳答案

Kubernetes 使用 IP-per-pod model .如果我理解正确,你想创建三个 mongo pod,并将这三个 pod 的 IP 地址写在 /etc/hosts 中。每个容器。修改 /etc/host出于多种原因(例如,pod 可能会死亡并被替换),直接创建文件可能不是一个好主意。

对于 Kubernetes 中的对等发现,您需要

  • 找出对等体的 IP 地址。
  • 使用地址更新您的应用程序。

  • (1) 可以使用 Headless Service 实现. (2) 要求您编写一个 sidecar 容器与您的 mongo 容器一起运行,执行 (1) 并配置您的应用程序。 Sidecar 容器是高度特定于应用程序的,您可能需要阅读一些 related stackoverflow questions关于为 mongodb 做这件事。

    至于(1),你可以创建一个 Headless Service通过使用此 service.yaml将 clusterIP 设置为 None。
    spec:
    clusterIP: None

    然后,您可以创建一个复制 Controller 来创建所需数量的 mongo pod。例如,您可以使用 mongo-controller.yaml , 替换 gcePersistentDisk使用所需的本地磁盘卷类型(例如 emptyDir hostPath ),并将副本编号更改为 3。

    每个 mongo pod 都会自动分配一个 IP 地址,并标有 name=mongo . Headless 服务使用标签选择器来查找 pod。当从节点或容器使用服务名称查询 DNS 时,它将返回 mongo pod 的 IP 地址列表。

    例如。,
    $ host mongo
    mongo.default.svc.cluster.local has address 10.245.0.137
    mongo.default.svc.cluster.local has address 10.245.3.80
    mongo.default.svc.cluster.local has address 10.245.1.128

    您可以获取您编写的 sidecar 容器中的地址,并相应地配置 mongodb-specific。

    关于docker - 将条目添加到容器/etc//hosts 使用 pod1.yaml 或 pod1.json 启动 pod 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748885/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com