无法ping Kubernetes(minikube)中同一个容器中的容器

时间:2017-01-01 02:01:21

标签: kubernetes minikube

在我的本地,我运行一个mysql容器,然后从同一网络上的另一个容器中ping它:

$ docker run -d tutum/mysql
$ docker run -it plumsempy/plum bash
    # ping MYSQL_CONTAINER_ID

      PING 67e35427d638 (198.105.244.24): 56 data bytes
      64 bytes from 198.105.244.24: icmp_seq=0 ttl=37 time=0.243 ms 
      ...

这很好。然后,在本地使用Kubernetes(minikube),我使用以下YAML部署tutum / mysql:

...
- name: mysql
  image: tutum/mysql
...

mysql容器没有其他内容。然后我将它部署,将ssh放入minikube pod,旋转一个随机容器,然后尝试在pod中ping mysql容器:

$ kubectl create -f k8s-deployment.yml
$ minikube ssh
    $ docker ps
    $ docker run -it plumsempy/plum bash
        # ping MYSQL_CONTAINER_ID_INSIDE_MINIKUBE

          PING mysql (198.105.244.24): 56 data bytes
          ^C--- mysql ping statistics ---
          10 packets transmitted, 0 packets received, 100% packet loss

        # traceroute MYSQL_CONTAINER_ID_INSIDE_MINIKUBE

          traceroute to aa7f7ed7af01 (198.105.244.24), 30 hops max, 60 byte packets
           1  172.17.0.1 (172.17.0.1)  0.031 ms  0.009 ms  0.007 ms
           2  10.0.2.2 (10.0.2.2)  0.156 ms  0.086 ms  0.050 ms
           3  * * *
           4  * * *
           5  dtr02gldlca-tge-0-2-0-1.gldl.ca.charter.com (96.34.102.201)  16.153 ms  16.107 ms  16.077 ms
           6  crr01lnbhca-bue-200.lnbh.ca.charter.com (96.34.98.188)  18.753 ms  18.011 ms  30.642 ms
           7  crr01mtpkca-bue-201.mtpk.ca.charter.com (96.34.96.63)  30.779 ms  30.523 ms  30.428 ms
           8  bbr01mtpkca-bue-2.mtpk.ca.charter.com (96.34.2.24)  24.089 ms  23.900 ms  23.814 ms
           9  bbr01ashbva-tge-0-1-0-1.ashb.va.charter.com (96.34.3.139)  26.061 ms  25.949 ms  36.002 ms
           10  10ge9-10.core1.lax1.he.net (65.19.189.177)  34.027 ms  34.436 ms  33.857 ms
           11  100ge12-1.core1.ash1.he.net (184.105.80.201)  107.873 ms  107.750 ms  104.078 ms
           12  100ge3-1.core1.nyc4.he.net (184.105.223.166)  100.554 ms  100.478 ms  100.393 ms
           13  xerocole-inc.10gigabitethernet12-4.core1.nyc4.he.net (216.66.41.242)  109.184 ms  111.122 ms  111.018 ms
           14  * * *
           15  * * * 
           ...(til it ends)

plumsempy/plum可以是任何容器,因为它们都在同一网络和同一个pod上,ping应该通过。问题是为什么我无法在minikube上找到mysql,我该如何解决?

2 个答案:

答案 0 :(得分:2)

我猜容器ID不能与Kubernetes一起使用。您还可以看到,容器ID已解析为公共IP 198.105.244.24,这看起来不对。

您可以通过多种方式联系此广告连播:

  • 通过kubectl describe -f k8s-deployment.yml
  • 获取pod IP
  • 为该pod创建service并执行其中一项(假设服务名称为mysql):
    • 使用像ping ${MYSQL_SERVICE_HOST}
    • 这样的environment variables
    • 使用像ping mysql.default.svc.cluster.local
    • 这样的DNS

答案 1 :(得分:2)

来自k8s multi-container pod docs

  

Pod共享命运,并共享一些资源,例如存储卷和IP地址。

因此,mysql容器可以从IP地址plum的{​​{1}}容器中访问。

此外,由于127.0.0.1默认情况下在端口3306上运行,您可能希望mysql检查它是否可以访问(telnet 127.0.0.1 3306使用的ICMP不具备港口的概念。)