无法将端口绑定到我在 Google 容器优化 VM 中的容器

Cannot bind ports to my container in Google Container optimized VM

我正在尝试 运行 在 GCE 中的 Google 容器优化虚拟机上 docker 容器。

这是我的 docker 文件。我构建了一个容器镜像并将其推送到 gcr.io.

FROM nginx:1.9
COPY config /etc/nginx

并且我写了一个容器清单文件。

version: v1beta2
containers:
  - name: test
    image: gcr.io/myproject/test
    ports:
      - name: http
        hostPort: 80
        containerPort: 80
      - name: https
        hostPort: 443
        containerPort: 443

我使用清单文件部署到 GCE,但端口绑定与我预期的不同。为什么主机端口 80 和 443 重定向到 google_containers/pause 而不是 myproject/test?

local$ gcloud compute instance create test \
  --image container-vm \
  --metadata-from-file google-container-manifest=container.yaml \
  --zone us-central1-b \
  --machine-type f1-micro \
  --tags http-server,https-server

local$ gcloud compute ssh --zone us-central1-b test

test$ sudo docker ps -a
CONTAINER ID IMAGE                                COMMAND              CREATED        STATUS        PORTS                                    NAMES
818828ccc2c6 gcr.io/myproject/test:latest         "nginx -g 'daemon of 23 seconds ago Up 22 seconds                                          k8s_test.9de3822_7f9f8ecace94a22b2bea59ee14f3bcd0-test_df40d10c4dfa4
f40d10c4dfa4 gcr.io/google_containers/pause:0.8.0 "/pause"             32 seconds ago Up 31 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp k8s_POD.c6ce2a78_7f9f8ecace94a22b2bea59ee14f3bcd0-test_default_7f9f8ecace94a22b2bea59ee14f3bcd0-test_64d51838

我已将清单 v1beta2 的版本更新为 v1 (v1beta3) 并再次尝试。端口绑定的结果好像和上一个一样,但是容器可以通过80和443端口与外网通信。

version:1
kind: Pod
spec:
    restartPolicy: Always
    dnsPolicy: Default
    containers:
        - name: test
          image: gcr.io/myproject/test
          imagePullPolicy: Always
          ports:
              - name: http
                hostPort: 80
                containerPort: 80
                protocol: TCP
              - name: https
                hostPort: 443
                containerPort: 443
                protocol: TCP