解决Kubernetes上部署elastic search出现pending的问题

场景与问题:

要在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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值