【发布时间】:2018-10-14 04:42:28
【问题描述】:
我有一个非常简单的 go 应用程序,可以在 Windows 和 Mac 下正常工作。 (顺便说一句,我是一个 golang 新手)。该应用程序的目的是订阅 google cloud pubsub 订阅并使用 REST 将消息转发到另一个应用程序。
代码如下:
func getOrCreateTopic() {
log.Infof("1")
ctx := context.Background()
log.Infof("2")
topicName := viper.GetString("gce.pubsub.topic")
log.Infof("3")
topic = client.Topic(topicName)
log.Infof("4")
exists, _ := topic.Exists(ctx)
log.Infof("5")
if topic == nil || !exists {
topic, err = client.CreateTopic(ctx, topicName)
if err != nil {
log.Errorf("Failed to create topic %s: %v", topicName, err)
os.Exit(2)
}
}
}
func main() {
...
getOrCreateTopic();
...
}
我创建了一个 docker 容器并将其发布到我们在谷歌云中的 kubernetes 集群。我在日志中看到的是“4”之前的所有内容,然后仅此而已。但该进程仍显示为在 kubernetes 中运行。
我迷路了,似乎对 API 的调用刚刚挂起。
【问题讨论】:
-
无论您在哪里创建客户端,您是否都在检查错误?
-
您是否查看过堆栈跟踪以了解其实际挂起的位置?
-
您是否在检查 GOOGLE_APPLICATION_CREDENTIALS 环境? cloud.google.com/kubernetes-engine/docs/tutorials/…
-
你能发布你的 Dockerfile 吗?
标签: docker go kubernetes google-cloud-platform