繁体   English   中英

Kubernetes 裸机 NFS PV 错误与 elasticsearch 掌舵图

[英]Kubernetes bare metal NFS PVs error with elasticsearch helm chart

我在 Ubuntu 18.04 LTS 上使用conjure-up kubernetes在裸机专用服务器上部署conjure-up 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 helm chart ( https://github.com/helm/charts/tree/master/incubator/elasticsearch ),它创建了两个成功绑定到我的 PV 的声明。

问题是之后容器似乎遇到了错误:

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

豆荚视图

持久卷声明视图

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

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

编辑:

我决定清除 helm 部署并重试,这次使用不同的存储类型,本地存储卷。 我按照 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 的(主、客户端、数据)日志都是空的。 错误是一样的。

我能够通过在主机上自己运行sysctl -w vm.max_map_count=262144并删除试图执行此操作失败的“sysctl”初始化容器来解决该问题。

它看起来是一个经常出现的问题,并且在各种环境和配置中都可以观察到。 然而,目前还不清楚究竟是什么导致了它。 您能否提供有关您的软件版本、日志片段等的更多详细信息?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM