如何重新启动kubernetes pod并保存数据

我现在使用kubernetes运行Docker容器。我只是创build容器,并使用SSH连接到我的豆荚。

我需要做一些系统configuration更改,所以我需要重新启动容器,但是当我重新启动容器时,它将丢失容器中的所有数据。 kubernetes将运行一个新的Pod,就像Docker镜像的原始版本一样。

那么我怎样才能重新启动荚而只是保存数据呢?

Kubernetes提供了我的Bluemix

您需要了解有关容器的更多信息,因为您的问题表明您没有完全理解这些概念。

  1. 在容器中运行SSH是反模式,容器不是虚拟机。 所以从中删除SSH服务器。
  2. 您运行SSH的事实表明您可能每个容器都运行多个进程。 这通常是不好的做法。 因此,请移除该主pipe并直接在您的入口处调用您的主stream程。
  3. 设置您的容器映像主进程使用环境variables或configuration文件在运行时进行configuration。

最后一项意味着您可以在您的Pod清单中定义环境variables,或者使用Kubernetes configmaps来存储configuration文件。 您的Pod将读取这些内容,并且您的容器中的过程将得到正确configuration。 如果不是你的Pod会死掉,或者你的进程无法正常运行,你可以编辑环境variables或configuration图。

我的主要build议是不要使用Kubernetes,直到你的Docker镜像被正确写入并且你的configuration想通了,你不应该在容器中执行exec来让你的进程运行。

最后,更一般地说,你不应该保持在一个容器内的状态。

为了存储数据,您需要设置永久性存储,如果您使用Google Cloud作为平台,则需要创build一个磁盘来存储数据,并在清单中定义该磁盘的使用。

使用Bluemix,看起来您只需创build卷并使用它们即可。

bx ic volume-create myapplication_volume ext4 bx ic run --volume myapplication_volume:/data --name myapplication registry.eu-gb.bluemix.net/<my_namespace>/my_image 

Bluemix – 持久性存储文档

我自己不使用Bluemix,所以我将继续使用Google持久性磁盘的示例清单。

 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: myapplication namespace: default spec: replicas: 1 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate selector: matchLabels: app: myapplication template: metadata: labels: app: myapplication spec: containers: - name: myapplication image: eu.gcr.io/myproject/myimage:latest imagePullPolicy: Always ports: - containerPort: 80 - containerPort: 443 volumeMounts: - mountPath: /data name: myapplication-volume volumes: - name: myapplication-volume gcePersistentDisk: pdName: mydisk-1 fsType: ext4 

这里磁盘mydisk-1映射到/data挂载点。 重新启动后将保留的唯一数据将在该文件夹内。

如果你想存储你的日志,例如你可以符号链接日志文件夹。

 /var/log/someapplication -> /data/log/someapplication 

它的工作原理,但推荐!

我不清楚,如果你正在对节点进行切换,或者使用一些工具在容器中执行一个shell。 即使每个容器运行多个进程是不好的做法,如果你保持对内存和CPU使用的标签,它似乎工作得很好。

运行一个ssh服务器和cronjobs在同一个容器中,例如将绝对工作,虽然它不是最好的解决scheme。

一年多来,我们一直在使用多个(2-5)生产过程的监督人员,并且工作出色得令人吃惊。

有关各种平台中持久卷的更多信息。 https://kubernetes.io/docs/concepts/storage/persistent-volumes/