如何停止kubernetes中的neo4j社区版?

时间:2019-03-21 01:53:27

标签: docker neo4j kubernetes containers

我已将neo4j社区版(v3.2.2)放入kubernetes中。但是社区版不支持热备份,因此我必须将其关闭以进行备份/还原数据。

我尝试过:

kubectl exec neo4j-0 /var/lib/neo4j/bin/neo4j stop

但它显示:

Neo4j not running

也尝试过:

kubectl exec -it neo4j-0 bash
/var/lib/neo4j/bin/neo4j stop

但仍然无法停止容器中的neo4j

Neo4j not running

有什么办法解决吗?

2 个答案:

答案 0 :(得分:1)

您不能在容器中停止主进程,否则它将被视为已死,并且Kubernetes会终止此Pod并安排一个新的运行良好的Pod。

此外,Kubernetes不支持挂起的Pod。停止/启动Pod更便宜。

因此,在您的情况下,建议您在备份期间将部署缩减为零个副本

kubectl scale --replicas=0 deployment/neo4j

备份完成后,向上扩展至所需的副本

kubectl scale --replicas=1 deployment/neo4j

答案 1 :(得分:0)

转储/加载命令是严格的离线操作,而备份/恢复是在线操作。

我通过创建另一个具有相同图像的 pod 得到了另一个解决方案,然后我将 statefulset 副本缩小到 neo4j 的 0 并安装了 statefulset 使用的卷。

创建转储文件后,我需要使用插件push-to-cloud将其推送到aurora neo4j,请下载相同版本,否则无法运行

这是我的 yaml 文件:

apiVersion: v1
kind: Pod
metadata:
name: neo4j-dumper
spec:
 containers:
   - name: neo4j-dumper
     image: neo4j:3.5.23-enterprise
     command:[
      "sh",
      "-c",
      "mkdir /dump && neo4j-admin dump --to /dump/db.dump && chown -R neo4j /dump && sleep 30000;",
    ]
  volumeMounts:
    - name: datadir
      mountPath: /data
volumes:
  - name: datadir
    persistentVolumeClaim:
      claimName: datadir-neo4j-neo4j-core-0