Kubernetes裸金属NFS PV出现弹性搜索舵图错误

时间:2018-09-29 10:09:05

标签: docker kubernetes nfs kubernetes-helm cloud-bare-metal

我在Ubuntu 18.04 LTS上使用conjure-up kubernetes在裸机专用服务器上部署了Kubernetes。这也意味着节点是LXD容器。

我需要用于Elasticsearch和MongoDB的持久卷,经过研究后,我决定使该卷在我的部署中工作的最简单方法是共享NFS。 我在主机操作系统上创建了NFS共享,并进行了以下配置:

  

/ srv / volumes 127.0.0.1(rw)10.78.69。*(rw,no_root_squash)

10.78.69.*似乎是Kubernetes使用的桥接网络,至少从ifconfig来看,没有别的。

然后我继续创建两个文件夹,/ srv / volumes / 1和/ srv / volumes / 2 我从这些文件夹中创建了两个PV,第一个具有此配置(第二个相似):

apiVersion: v1
kind: PersistentVolume
metadata:
  name: elastic-pv1
spec:
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /srv/volumes/1
    server: 10.78.69.1

然后,我部署Elasticsearch掌舵图(https://github.com/helm/charts/tree/master/incubator/elasticsearch),并创建两个成功绑定到我的PV的声明。

问题在于此后容器似乎遇到错误:

  

错误:无法启动容器“ sysctl”:来自守护程序的错误响应:Linux运行时规范设备:lstat /dev/.lxc/proc/17848/fdinfo/24:没有此类文件或目录   后退重启失败的容器

Pods view

Persistent Volume Claims view

我有点卡在这里。我尝试搜索该错误,但无法找到此问题的解决方案。

以前,在我将/etc/exports中的允许IP设置为10.78.69.*之前,Kubernetes会告诉我它在尝试挂载时从NFS服务器获得了“权限被拒绝”,所以我认为现在挂载成功了,因为该错误消失了。

编辑:

我决定清除掌舵部署,然后再次尝试使用另一种存储类型,即本地存储卷。我是按照Canonical的指南创建它们的,我知道它们的工作原理是因为我以这种方式为MongoDB设置了一个,并且效果很好。

elasticsearch helm部署的配置已更改,因为现在我必须为在其上创建持久卷的节点设置亲和力:

values.yaml

data:
    replicas: 1,
    nodeSelector:
        elasticsearch: data
master:
    replicas: 1,
    nodeSelector:
        elasticsearch: master
client:
    replicas: 1,
cluster:
    env: {MINIMUM_MASTER_NODES: "1"}

我使用

进行了部署
  

helm install --name site-search -f values.yaml incubator / elasticsearch

这是唯一的更改,但是elasticsearch仍然存在相同的问题。

其他信息:

kubectl version

Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.3", GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862", GitTreeState:"clean", BuildDate:"2018-09-09T18:02:47Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.3", GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862", GitTreeState:"clean", BuildDate:"2018-09-09T17:53:03Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

elasticsearch图片是头盔图中的默认图片:

  

docker.elastic.co/elasticsearch/elasticsearch-oss:6.4.1

各个Pod(主,客户端,数据)的日志为空。 错误是一样的。

2 个答案:

答案 0 :(得分:1)

我自己在主机上运行sysctl -w vm.max_map_count=262144,并删除了试图成功执行此操作的“ sysctl”初始化容器,从而解决了该问题。

答案 1 :(得分:0)

这似乎是一个经常出现的问题,并且在各种环境和配置中都可以观察到。但是,目前还不清楚到底是什么原因造成的。您能否提供有关软件版本,日志片段等的更多详细信息?