当前位置: 首页 > 面试题库 >

在kubernetes中运行的docker容器内没有互联网连接并通过网络进行编织

姚善
2023-03-14
问题内容

我有一个在AWS
EC2实例上运行的kubernetes集群,并编织为networking(cni)。我已经禁用了docker网络(ipmask和iptables),因为它是通过weave管理的(以避免网络冲突)。

我已经将我的Jenkins作为K8s pod部署在此集群上,并且这个jenkins使用jenkins
kubernetes插件基于我定义的pod和容器模板生成了动态的slave。这些从属容器中具有docker客户端,该客户端通过docker.sock连接到主机docker引擎。

因此,当我在Jenkins中运行任何作业时,它将启动一个从属服务器,并在此服务器上克隆git存储库并开始构建存储库中存在的Dockerfile。

我的示例dockerfile看起来像这样:

FROM abc:123
RUN yum update

因此,当容器开始构建它时,它会尝试连接到redhat repo以更新本地repo并在此处失败。为了调试,我登录到该容器并尝试wget /
CURL一些软件包,发现该容器中没有Internet连接。

我怀疑在构建docker时会启动中间容器,并且这些容器没有通过编织进行管理,因此它们没有Internet连接。

需要建议。


问题答案:

好了,经过很多努力,终于找到了解决方案
因此,每当K8s启动Pod时,它都会启动Sidecart容器,其作用基本上是为Pod容器提供网络。
因此,在运行docker build时,如果我将其容器ID作为网络传递,那么我的中间上下文便开始通过此容器获得Internet连接。因此更改看起来像这样:

docker build -t "some name" --network container:\$(docker ps | grep \$(hostname) | grep k8s_POD | cut -d\" \" -f1) -f infra/docker/Dockerfile .

希望这可以帮助。:D



 类似资料:
  • 问题内容: 我有一个在AWS EC2实例上运行的kubernetes集群,并编织为networking(cni)。我已经禁用了docker网络(ipmask和iptables),因为它是通过weave管理的(以避免网络冲突)。 我已经将我的Jenkins作为K8s pod部署在此集群上,并且该jenkins使用jenkins kubernetes插件基于我定义的pod和容器模板生成了动态的slav

  • 问题内容: 我的工作正常,但现在停止了。我尝试了以下命令,但无济于事: -在主机和容器上 我所得到的是。Docker版本0.7.0 有任何想法吗? PS也禁用 问题答案: 遵循以下建议进行修复: […]您可以尝试重设所有内容吗? 它将迫使docker重新创建网桥并重新初始化所有网络规则 https://github.com/dotcloud/docker/issues/866#issuecomme

  • 我让它正常工作,但现在它停止了。我尝试了以下命令,但没有用: -在主机和容器上 我得到的是未知主机google。com。Docker版本0.7.0 有什么想法吗? P、 S.ufw也被禁用

  • 一切都很好,当它是在Ubuntu-18.04.谢谢:)

  • 你好,我有一个应用程序,有两个活动:主页面和详细页面。 当有互联网连接时,用户可以从主页面导航到详细信息页面。当没有网络连接时,他不能这样做。 问题是:当我进入详细信息页面并关闭wifi时,我想完成此活动,我如何实现此功能?我在主要活动类中检查过类似这样的内容: 当我启动有互联网或没有互联网的应用程序时,它都可以正常工作,但是当我在运行时关闭wifi时,它不起作用。 无论如何,谢谢你!

  • 大家好,我有一个简单的问题,如何在后台连续运行android中的一些代码块, 情况是检查互联网是否连接,相应地,它会将文件上传到服务器上。(这将在后台连续运行。) 我得到了类似BroadcastReceiver的东西,但我认为这只是为了检查互联网连接。 如果有人给块代码,让我明白,会有很大帮助... 谢谢