Kubernetes 系统容器 "pause" 没有获得正确的端口映射

Kubernetes system container "pause" doesn't get proper port mappings

我正在测试 kubernetes 1.1.7 设置(在 AWS 上)。这已按照标准程序 (http://kubernetes.io/v1.1/docs/getting-started-guides/aws.html) 安装,并且一切正常。

我尝试用两个容器启动最简单的 pod 复制控制器(因为我想玩多容器 pods,这不是常态,但仍然可以做到) .这是 RC:

apiVersion: v1
kind: Pod
metadata:
  name: test
  labels:
    app: web
spec:
  containers:
    - name: "80"
      image: "jonlangemak/docker:web_container_80"
      ports:
        - containerPort: 80
    - name: "8080"
      image: "jonlangemak/docker:web_container_8080"
      ports:
        - containerPort: 8080

我期望这会生成 2 个应用程序容器以及一个系统容器 "pause",后者将保存两个端口映射(80 和 8080)。

但是,如果我在登陆主机上执行 docker ps 这是我看到的:

CONTAINER ID        IMAGE                                                 COMMAND                CREATED             STATUS              PORTS               NAMES
2a15f633fff9        jonlangemak/docker:web_container_8080                 "/usr/bin/supervisor   23 seconds ago      Up 22 seconds                           k8s_8080.cf4f64ab_test_default_1dc9f591-d976-11e5-88b3-06da266e4957_6e389304                                                                                
0ff0b6cdd4ae        jonlangemak/docker:web_container_80                   "/usr/bin/supervisor   23 seconds ago      Up 23 seconds                           k8s_80.b7c46373_test_default_1dc9f591-d976-11e5-88b3-06da266e4957_90173279                                                                                  
84e3d7ea12c9        gcr.io/google_containers/pause:0.8.0                  "/pause"               23 seconds ago      Up 23 seconds                           k8s_POD.c16231a_test_default_1dc9f591-d976-11e5-88b3-06da266e4957_78c2a5e9            

有趣的是,一切正常,我可以为端口 80 和端口 8080 卷曲 pod IP,我得到了我期望得到的结果,但事实上我没有在 "pause"容器让我有点"uh? why?"。

想法?

谢谢。

除非您在相应的 port 上设置 HostPort 属性,否则不会有任何端口映射。

您应该使用服务来公开您的应用程序,而不是那样做。这种抽象将为您的应用程序提供一个 IP 地址,并充当集群中的本地负载平衡器。

您可以在官方 Kubernetes user documentation

中阅读有关 Kubernetes service 资源的更多信息