Docker Kubernetes服务似乎要使用多个容器,尽管只有一个容器在运行

Docker Kubernetes服务似乎要使用多个容器,尽管只有一个容器在运行,docker,kubernetes,google-cloud-platform,google-kubernetes-engine,Docker,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我构建了一个小型的、单用户的内部服务,该服务将数据存储在磁盘上的单个JSON blob中(它使用tinydb)——因此该服务不是设计为在多个节点上运行以确保数据一致性。不幸的是,当我发送API请求时,返回的结果不一致——似乎API正在写入不同的磁盘文件,因此返回的结果不一致(如果我为对象列表调用API两次,它将返回两个不同版本中的一个) 我将该服务部署到谷歌云(将其放入一个容器中,推送到gcr.io)。我创建了一个只有一个节点的集群,并将docker映像部署到集群中。然后我创建了一个服务来公开端

我构建了一个小型的、单用户的内部服务,该服务将数据存储在磁盘上的单个JSON blob中(它使用tinydb)——因此该服务不是设计为在多个节点上运行以确保数据一致性。不幸的是,当我发送API请求时,返回的结果不一致——似乎API正在写入不同的磁盘文件,因此返回的结果不一致(如果我为对象列表调用API两次,它将返回两个不同版本中的一个)

我将该服务部署到谷歌云(将其放入一个容器中,推送到gcr.io)。我创建了一个只有一个节点的集群,并将docker映像部署到集群中。然后我创建了一个服务来公开端口80。(按照此处的教程:)

我确认只有一个节点和一个pod在运行:

kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
XXXXX-2-69db8f8765-8cdkd   1/1     Running   0          28m

有没有关于如何解决这个问题的想法?我知道“使用真实的数据库”是一个简单的答案,但该应用程序相当轻量级,不需要那么复杂。我们公司使用GCloud+Kubernetes,因此我希望继续使用此基础结构。

在容器中写入的文件(即不是某种持久卷)将在容器因任何原因重新启动时消失。事实上,您确实应该设置文件权限,以防止写入映像中的文件,但/tmp或类似文件除外。您应该使用GCE磁盘持久卷,它可能会工作得更好:)

您是否将该文件存储在持久卷中?不,我只是将其存储在容器的磁盘中。我不希望文件的大小超过几兆字节。如何从我的应用程序代码中引用外部持久性磁盘?@user491880我认为kubernetes没有重新启动您的pod,因为重新启动计数为0。我想你的服务可能有问题。您可以尝试点击容器内的API,然后检查文件内容。请注意,在某些情况下,Kubernetes会自动重新启动容器,例如,如果节点出现故障。
kubectl get nodes
NAME                                       STATUS   ROLES    AGE   VERSION
gke-cluster-1-default-pool-4f369c90-XXXX   Ready    <none>   28m   v1.14.10-gke.24

kubectl get pods --all-namespaces
NAMESPACE     NAME                                                        READY   STATUS    RESTARTS   AGE
default       XXXXX-69db8f8765-8cdkd                                   1/1     Running   0          31m
kube-system   event-exporter-v0.2.5-7df89f4b8f-x6v9p                      2/2     Running   0          31m
kube-system   fluentd-gcp-scaler-54ccb89d5-p9qgl                          1/1     Running   0          31m
kube-system   fluentd-gcp-v3.1.1-bmxnh                                    2/2     Running   0          31m
kube-system   heapster-gke-6f86bf7b75-pvf45                               3/3     Running   0          29m
kube-system   kube-dns-5877696fb4-sqnw6                                   4/4     Running   0          31m
kube-system   kube-dns-autoscaler-8687c64fc-nm4mz                         1/1     Running   0          31m
kube-system   kube-proxy-gke-cluster-1-default-pool-4f369c90-7g2h         1/1     Running   0          31m
kube-system   l7-default-backend-8f479dd9-9jsqr                           1/1     Running   0          31m
kube-system   metrics-server-v0.3.1-5c6fbf777-vqw5b                       2/2     Running   0          31m
kube-system   prometheus-to-sd-6rgsm                                      2/2     Running   0          31m
kube-system   stackdriver-metadata-agent-cluster-level-7bd5779685-nbj5n   2/2     Running   0          30m