场景与问题:

要在Kubernetes上配置Elastic Search,但是根据官方教程来配置时,节点一直处于以下状态:
在这里插入图片描述
而pod也处于pending状态:

在这里插入图片描述
按照官网的解决方法并不能很好的解决问题,因此记录。

原因分析:

可能有以下几类原因:

  1. 计算资源不足
  2. 【重要】没有绑定PV(Persistence Volume)
  3. Java虚拟机等其他原因

解决方案:

逐个进行解决:

1.解决计算资源不足

参考官网解决计算资源不足的办法
修改elastic search的配置文件quickstart.yaml,本文所用的节点修改为如下,可以按照自己机器的配置量力而行:

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 7.13.2
  nodeSets:
  - name: default
    count: 1
    podTemplate:
      spec:
        containers:
        - name: elasticsearch
          env:
          - name: ES_JAVA_OPTS
            value: -Xms2g -Xmx2g
          resources:
            requests:
              memory: 4Gi
              cpu: 2
            limits:
              memory: 4Gi

修改完成后,运行

sudo kubectl apply -f quickstart.yaml 

完成配置。

2.完成PV绑定

这也是困扰我elastic search配置的主要原因,它配置了PVC(Persistence Volume Claim),但是没有绑定相应的PV。

sudo kubectl descibe pod

可见:
在这里插入图片描述
为了解决这一问题,需要再创建PV

首先创建pv.yaml,我的内容如下,如要使用还需做一些修改:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  #storageClassName: 
  local:
    path: /home/yuan/cli
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - yuan-virtual-machine

修改点1:

spec:
  capacity:
    storage: 1Gi

storage需要修改为与PVC一致的storage。

查看PVC的storage,输入:

sudo kubectl edit pvc

滚动至最下方:
在这里插入图片描述
与requests的storage一致即可。

修改点2

 local:
    path: /home/yuan/cli

修改为一个存在的目录地址即可。

修改点3

 nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - yuan-virtual-machine

values的值需要修改。

输入

sudo kubectl get nodes

得到:
在这里插入图片描述
将value替换为你的机器的NAME即可

保存pv.yaml文件后,进行配置使用

sudo kubectl apply -f pv.yaml

配置完成后即可运行。

3.其他问题

可以通过

sudo kubectl logs quickstart-es-default-0

查看日志,从而发现问题。

本文配置时出现了max virtual memory不足的问题,参考博文max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 成功解决
在这里插入图片描述

成功运行

sudo kubectl get pod

得到:
在这里插入图片描述

sudo kubectl describe pod

得到:
在这里插入图片描述

点击阅读全文
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐