kubernetes pod中的简单网络

时间:2016-05-07 10:15:56

标签: kubernetes dockerfile

我想在一个pod和主机中的两个容器之间进行通信,以便更好地了解kubernetes ketworking:

    #DockerfileA
    FROM debian:sid
    RUN /bin/bash -c "apt-get update && apt-get install -y netcat"
    CMD /bin/bash echo hello world | nc 127.0.0.1 40000

    #DockerfileB
    FROM debian:sid
    RUN /bin/bash -c "apt-get update && apt-get install -y netcat"
    EXPOSE 40000
    CMD /bin/bash nc -l 40000 | nc 127.0.0.1 50000

    #my_pod.yml
    apiVersion: v1
    kind: Pod
    metadata:
        name: netcat
        labels:
            app: netcat
    spec:
      containers:
      - name: my_container_a
        image: my_image_a:1
      - name: my_container_b
        image: my_image_b:1
        ports:
        - containerPort: 40000

    #my_service.yml        
    apiVersion: v1
    kind: Service
    metadata:
      name: netcat-service
    spec:
      ports:
      - port: 50000
        targetPort: 50000
        protocol: TCP
      selector:
        app: netcat

实际上我希望containerA通过netcat“hello world”发送到containerB,而containerB将它转发给主机。

但是当我创建pod时,我收到了以下警告(kubectl describe pod netcat):

  

警告FailedSync错误同步窗格,跳过:[失败   使用CrashLoopBackOff为“my_container_a”创建“StartContainer”:“Back-off 10s   重启失败的容器= my_container_a   pod = netcat_default(f141c598-1439-11e6-83fc-009c028bec97)“,未能   使用CrashLoopBackOff为“my_container_b”创建“StartContainer”:“Back-off 10s   重启失败的容器= my_container_b   荚= netcat_default(f141c598-1439-11e6-83fc-009c028bec97)“

文件中有错误吗?

我是否需要netcat-service使用netcat监听主机上的“hello world”消息,还是不必要?

在哪个地址:端口我应该在主机上使用netcat / curl吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

以下泊坞窗文件可在我的机器上运行:

#Dockerfile A
FROM debian:sid
RUN /bin/bash -c "apt-get update && apt-get install -y netcat"
CMD sleep 10 && echo hello world | nc 127.0.0.1 40000

#Dockerfile B
FROM debian:sid
RUN /bin/bash -c "apt-get update && apt-get install -y netcat"
CMD nc -l -p 40000 | nc <your_host_ip> 50000

我认为你不需要服务。我刚刚在主机上打开了一个终端并运行了“nc -l 50000”。你的pod.yaml是正确的。

关于“警告FailedSync错误同步窗格”错误消息,这似乎正常。每当容器终止时我都会看到此消息。在您的情况下,两个容器都被终止,因为命令失败。

如果您还不知道,可以使用“kubectl exec netcat -c mycontainera -i -t - bash -il”进入容器并尝试命令。