当前位置: 首页 > 知识库问答 >
问题:

在docker入口点启动dnsmasq的正确方式是什么?

农英杰
2023-03-14

我在dockerENTRYPOINT中编写了一个简单的脚本来使用dnsmasq

if [ ! -f /etc/resolv.dnsmasq ];then
   cp /etc/resolv.conf /etc/resolv.dnsmasq
   sed -i 's/^nameserver.*/nameserver 127.0.0.1/' /etc/resolv.conf
   dnsmasq -r /etc/resolv.dnsmasq
else
   dnsmasq -r /etc/resolv.dnsmasq
fi

我的逻辑很简单,k8s第一次启动docker contain时,它将在/etc/resolv中更新nameserver。conf设置为正确的值,我的脚本将把它复制到/etc/resolv。dnsmasq和在/etc/resolv中更改nameserver。conf127.0.0.1使用dnsmasq服务。

当docker因为/etc/resolv而重新启动时。dnsmasq保持不变,因此dnsmasq将刚刚启动。它大部分时间都能工作,但当k8s由于健康检查失败而重新启动容器时,它将无法工作。当这种情况发生时,我的解决方案。dnsmasq具有名称服务器127.0.0.1

/var/www/html # cat /etc/resolv.dnsmasq
nameserver 127.0.0.1
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:2 timeout:2

从我得到的评论和回答中,我意识到这是因为当容器被重新创建时,我有一个修改的/etc/resolv。conf和no/etc/resolv。dnsmasq。因此,然后运行部分。

但是为什么我会在/etc/resolv中使用名称服务器127.0.0.1。conf是否从图像重新创建?

我如何处理这一问题并使dnsmasq工作?

---更新---

我问我的服务提供商aliyun为什么在/etc/resolv中使用名称服务器127.0.0.1。conf当Kubernetes重新启动我的容器时。他们说一个可能的原因是我没有在部署yaml文件中设置dnsConfig。我没有足够的知识,但这可能是原因吗?


共有1个答案

祝嘉懿
2023-03-14

。。。当k8s由于健康检查失败而重新启动容器时,它总是无法工作

docker restart不同,K8s使用新实例重新启动容器,您保存在终止容器中的任何内容都不会出现。要使文件在K8s重启期间保持不变,您需要将其保存在持久卷中(例如NFS、云提供商提供的存储等)。

 类似资料:
  • 因此,当我编写java文件时: 然后在windows cmd中,我以以下方式编译: 很好,结果是: “严肃的业务逻辑。” 在Netbeans中创建项目时,会添加以下行: 我不能在cmd中编译,只能在IDE中编译。我尝试过manifest.txt,UTF8编码没有BOM,加上文件的换行符。 显示txt: “jar cvfm Program.jar Manifest.txt Program.class

  • 我在下面有一个拉请求反馈,只是想知道哪种方式是正确的方式来导入洛蒂什? 您最好从“lodash/has”导入has。。对于lodash(v3)的早期版本,它本身非常繁重,我们应该只导入一个特定的模块/函数,而不是导入整个lodash库。不确定更新的版本(v4)。 vs 谢啦

  • 我刚接触docker,想要在守护进程模式下启动它,监听特定的IP地址和端口。文档中说,这可以通过编写来实现。然后它说我可以用这个命令列出正在运行的容器。如果我这样做,我会得到以下信息: 获取http:///var/run/docker.sock/v1.20/containers/json?all=1:拨号unix/var/run/docker.sock:没有这样的文件或目录。 是否尝试连接到启用T

  • 我刚刚遇到了一个奇怪的问题,这是我第一次在服务器上部署spring boot应用程序 像往常一样,我使用java命令java-jar myApp运行应用程序。罐子 过了一会儿,我看到应用程序停止了,没有留下任何错误消息。 所以我不知道问题出在哪里, 可能的原因是java内存不够,所以我将其增加到7GB,因为它有套接字 但问题依然存在 请注意,我没有docker,服务器是Amazon light s

  • 什么是REST API响应结构和布局的最佳实践? Scrath示例: 成功回应: 失败响应:

  • 我正在构建一个在Windows ServerCore下运行ES V7.5.1的docker映像,但这似乎不起作用。 当我启动docker容器时,我有一条消息说节点不能加入集群。 [O.E.C.C.ClusterFormationFailureHelper][66EADAF2C321]尚未发现主节点,此节点以前未加入自举(V7+)群集,并且[cluster.initial_master_nodes]