Kubernetes 如何在google容器引擎上运行docker映像?

Kubernetes 如何在google容器引擎上运行docker映像?,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我正在尝试在Google容器引擎中运行docker映像。该实例没有运行docker映像。我可以ssh并运行docker命令,服务就会启动。但是,当我从终端启动实例时,什么也没有发生。有人能看看我做错了什么吗 我的docker文件看起来像 FROM golang RUN mkdir -p /app COPY . /app RUN go get golang.org/x/tools/cmd/present ENTRYPOINT cd /app && /go/bin/present -

我正在尝试在Google容器引擎中运行docker映像。该实例没有运行docker映像。我可以ssh并运行docker命令,服务就会启动。但是,当我从终端启动实例时,什么也没有发生。有人能看看我做错了什么吗

我的docker文件看起来像

FROM golang
RUN mkdir -p /app
COPY . /app
RUN go get golang.org/x/tools/cmd/present
ENTRYPOINT cd /app && /go/bin/present -http=":8080"
EXPOSE 8080
version: v1beta3
containers:
  - name: talks
    image: sheki/talks 
    ports:
      - name: http-port
        containerPort: 8080
        hostPort: 80'
yaml看起来像

FROM golang
RUN mkdir -p /app
COPY . /app
RUN go get golang.org/x/tools/cmd/present
ENTRYPOINT cd /app && /go/bin/present -http=":8080"
EXPOSE 8080
version: v1beta3
containers:
  - name: talks
    image: sheki/talks 
    ports:
      - name: http-port
        containerPort: 8080
        hostPort: 80'
启动实例的命令是

gcloud compute instances create zoop \
    --image container-vm \
    --metadata-from-file google-container-manifest=containers.yaml \
    --zone us-central1-a \
    --machine-type f1-micro

您在问题中提到您正在使用google容器引擎,但实际上您正在使用(这有点不同)。如果您想使用容器引擎,请查看文档以创建一个容器

我运行了您的示例,在
/var/log/kubelet.log
中看到以下错误:

E0519 17:05:41.285556    2414 http.go:54] Failed to read URL: http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/google-cont
ainer-manifest: received 'version: v1beta3
containers:
  - name: talks
    image: sheki/talks 
    ports:
      - name: http-port
        containerPort: 8080
        hostPort: 80'
', but couldn't parse as neither single (error unmarshaling JSON: json: cannot unmarshal string into Go value of type int: {Version:v1beta3 ID: UUID:
 Volumes:[] Containers:[{Name:talks Image:sheki/talks Entrypoint:[] Command:[] WorkingDir: Ports:[{Name:http-port HostPort:0 ContainerPort:8080 Proto
col: HostIP:}] Env:[] Resources:{Limits:map[] Requests:map[]} CPU:0 Memory:0 VolumeMounts:[] LivenessProbe:<nil> ReadinessProbe:<nil> Lifecycle:<nil>
 TerminationMessagePath: Privileged:false ImagePullPolicy: Capabilities:{Add:[] Drop:[]}}] RestartPolicy:{Always:<nil> OnFailure:<nil> Never:<nil>} D
NSPolicy: HostNetwork:false}) or multiple manifests (error unmarshaling JSON: json: cannot unmarshal object into Go value of type []v1beta1.Container
Manifest: []) nor single (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"containerPort":8080,"hostPort":"80'","name
":"http-port"}]}],"version":"v1beta3"}') or multiple pods (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"container
Port":8080,"hostPort":"80'","name":"http-port"}]}],"version":"v1beta3"}').
E0519 17:05:41.28556 2414 http.go:54]读取URL失败:http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/google-cont
ainer清单:已收到版本:v1beta3
容器:
-名称:会谈
图片:谢基/会谈
端口:
-名称:http端口
集装箱港口:8080
主机端口:80'
,但无法将两个字符串都解析为单个(错误:将JSON:JSON:无法将字符串解组为int:{Version:v1beta3 ID:UUID:
卷:[]容器:[{Name:talks映像:sheki/talks入口点:[]命令:[]工作目录:端口:[{Name:http端口主机端口:0容器端口:8080协议
col:HostIP:}]Env:[]资源:{限制:映射[]请求:映射[]}CPU:0内存:0卷数量:[]LivenessProbe:ReadinesProbe:Lifecycle:
TerminationMessagePath:Privileged:false ImagePullPolicy:Capabilities:{Add:[]Drop:[]}}]RestartPolicy:{Always:OnFailure:Never:}D
NSPolicy:HostNetwork:false})或多个清单(将JSON:JSON:cannot解组为[]v1beta1.Container类型的Go值时出错)
清单:[])也不是单一的(种类未设置在“{”容器“:[{”图像“:“sheki/talks”,“名称“:“talks”,“端口“:[{”容器端口“:8080,“主机端口“:“80”),名称中
“:”http port“}]}],”version“:”v1beta3“}”)或多个POD(未在“{”容器中设置的种类“{”图像“:”sheki/talks“,”名称“:”talks“,”端口“:[{”容器
端口:8080,“主机端口”:“80',“名称”:“http端口”}],“版本”:“v1beta3”}')。

看起来容器VM的文档已经过时了

如果我只是在试验docker容器,而没有规划任何大型基础设施,您会建议在容器集群上使用容器VM吗?我可能会创建最多3个容器的应用程序-web服务器,数据库+1个容器,运行类似Distance的东西。我有偏见,但我认为使用容器集群即使对于少量容器也更简单,因为它允许您在需要更改容器时轻松地重新部署容器(例如,当您升级软件时)。它还允许您将所有容器配置为在一台计算机上运行(例如,当您在本地开发时),然后在部署到云提供商时将其扩展到多台计算机。