解决Kubernetes上部署elastic search出现pending的问题
场景与问题:要在Kubernetes上配置Elastic Search,但是根据官方教程来配置时,节点一直处于以下状态:而pod也处于pending状态:按照官网的解决方法并不能很好的解决问题,因此记录。原因分析:可能有以下几类原因:计算资源不足【重要】没有绑定PV(Persistence Volume)Java虚拟机等其他原因解决方案:逐个进行解决:1.解决计算资源不足参考官网解决计算资源不足的
场景与问题:
要在Kubernetes上配置Elastic Search,但是根据官方教程来配置时,节点一直处于以下状态:
而pod也处于pending状态:
按照官网的解决方法并不能很好的解决问题,因此记录。
原因分析:
可能有以下几类原因:
- 计算资源不足
- 【重要】没有绑定PV(Persistence Volume)
- 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)