elasticsearch Kubernetes-Ec2-弹性搜索获取0/2个节点可用:2内存不足
我正在研究Kubernetes-弹性搜索部署 我遵循了elastic.co()提供的文档 我的弹性YAML文件如下:elasticsearch Kubernetes-Ec2-弹性搜索获取0/2个节点可用:2内存不足,elasticsearch,kubernetes,elasticsearch,Kubernetes,我正在研究Kubernetes-弹性搜索部署 我遵循了elastic.co()提供的文档 我的弹性YAML文件如下: cat <<EOF | kubectl apply -f - apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: quickstart spec: version: 7.8.0 nodeSets: - name: default coun
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 7.8.0
nodeSets:
- name: default
count: 1
config:
node.master: true
node.data: true
node.ingest: true
node.store.allow_mmap: false
podTemplate:
spec:
initContainers:
- name: sysctl
securityContext:
privileged: true
command: ['sh', '-c', 'sysctl -w vm.max_map_count=262144']
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: -Xms2g -Xmx2g
resources:
requests:
memory: 4Gi
cpu: 0.5
limits:
memory: 4Gi
cpu: 2
EOF
我正在使用下面的代码为我的橡皮筋创建索赔
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 7.8.0
nodeSets:
name: default count: 1 config: node.master: true node.data: true node.ingest: true node.store.allow_mmap: false volumeClaimTemplates:
metadata: name: elasticsearch-data spec: accessModes:
ReadWriteOnce resources: requests: storage: 200Gi storageClassName: gp2 EOF
存储类:(我创建并将其作为默认值)
Kubectl获得pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv0001 200Gi RWO Retain Available
Labels: <none>
Annotations: Finalizers: [kubernetes.io/pv-protection]
StorageClass:
Status: Available
Claim:
Reclaim Policy: Retain
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 200Gi
Node Affinity: <none>
标签:
注释:终结器:[kubernetes.io/pv-protection]
StorageClass:
状态:可用
索赔:
回收策略:保留
访问模式:RWO
VolumeMode:文件系统
容量:200Gi
节点关联:
kubectl获得pvc
Namespace: default
StorageClass: gp2
Status: Pending
Volume:
Labels: common.k8s.elastic.co/type=elasticsearch
elasticsearch.k8s.elastic.co/cluster-name=quickstart
elasticsearch.k8s.elastic.co/statefulset-name=quickstart-es-default
Annotations: volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Mounted By: quickstart-es-default-0
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 61s (x18 over 24m) persistentvolume-controller Failed to provision volume with StorageClass "gp2": Failed to get AWS Cloud Provider. GetCloudProvider returned <nil> instead
名称空间:默认值
存储类别:gp2
状态:待定
卷:
标签:common.k8s.elastic.co/type=elasticsearch
elasticsearch.k8s.elastic.co/cluster name=quickstart
elasticsearch.k8s.elastic.co/statefulset name=quickstart es默认值
注释:volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/aws-ebs
终结器:[kubernetes.io/pvc保护]
容量:
访问模式:
VolumeMode:文件系统
装载人:quickstart-es-default-0
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
警告设置失败61s(x18超过24m)persistentvolume控制器无法使用StorageClass“gp2”设置卷:无法获取AWS云提供程序。改为返回GetCloudProvider
但我发现以下错误:
正在为pod“quickstart-es-default-0”运行“VolumeBinding”过滤器插件:pod已解除即时PersistentVolumeClaims的绑定
我的卷在Ec2 EBS中您需要创建PV并将此PVC绑定到PV。然后,您可以将应用程序配置为使用PVC。根据pod中的日志,有两个问题需要解决
资源 在您提供的文档中,指定您至少需要2GB内存,您应该尝试在限制和请求方面将请求资源从4Gi更改为2Gi。正如aws t2.large中提到的,它有2vCPU和8GiB的内存,因此根据您当前的请求,它几乎是虚拟机的所有资源
卷边 命令,该命令可用于使storageclass成为默认的storageclass
kubectl patch storageclass <name_of_storageclass> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl patch-storageclass-p'{“metadata”:{“annotations”:{“storageclass.kubernetes.io/是默认类”:“true”}
关于这一点,有相关的讨论
编辑 引自 “保留回收”策略允许手动回收资源。删除PersistentVolumeClaim时,PersistentVolume仍然存在,并且该卷被视为“已释放”。但由于前一位索赔人的数据仍保留在该卷上,因此还不能用于另一项索赔。管理员可以通过以下步骤手动回收卷
- 删除PersistentVolume。删除PV后,外部基础结构中的关联存储资产(如AWS EBS、GCE PD、Azure磁盘或Cinder卷)仍然存在
- 相应地手动清理关联存储资产上的数据
- 手动删除关联的存储资产,或者如果要重用同一存储资产,请使用存储资产定义创建新的PersistentVolume
因此,请尝试删除pv和pvc并再次创建它们。尝试运行
kubectl get nodes
查看集群中哪些节点可用。在我看来,您现在没有可供调度程序部署播客的工作节点。``ip-Ready master 7d1h v1.18.5 ip-Ready 7d1h v1.18.5``我在运行kubectl get nodes时得到了这一点您的节点有足够的内存吗?我是Kubernetes初学者,正在尝试安装es,坦率地说,不知道节点有内存,我刚刚创建了一个主程序和工作程序,然后部署了这个弹性体。我正在使用ROM大小为300Gi的ec2大型实例。关于VolumeBinding的问题,请看一看。存储类名称PROVISIONER回收策略VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2(默认)kubernetes.io/aws-ebs删除立即假5m20s
PVNAME容量访问模式回收策略状态索赔存储类原因年龄pv0001 200Gi RWO保留已发布default/elasticsearch-data-quickstart-es-default-0
PVC状态为挂起,我仍然得到相同的未绑定内容。@RajeevUppala您好,我已经编辑了我的答案以回答您的评论。我已经编辑了,仍然得到相同的问题,不知道这里缺少什么。请转到我的问题,检查我在问题2中所做的事情。感谢您抽出时间,非常感谢您的帮助。
Namespace: default
StorageClass: gp2
Status: Pending
Volume:
Labels: common.k8s.elastic.co/type=elasticsearch
elasticsearch.k8s.elastic.co/cluster-name=quickstart
elasticsearch.k8s.elastic.co/statefulset-name=quickstart-es-default
Annotations: volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Mounted By: quickstart-es-default-0
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 61s (x18 over 24m) persistentvolume-controller Failed to provision volume with StorageClass "gp2": Failed to get AWS Cloud Provider. GetCloudProvider returned <nil> instead
Warning FailedScheduling 20m (x3 over 21m) default-scheduler 0/2 nodes are available: 2 Insufficient memory.
Warning FailedScheduling <unknown> default-scheduler running "VolumeBinding" filter plugin for pod "quickstart-es-default-0": pod has unbound immediate PersistentVolumeClaims
kubectl get storageclass
kubectl patch storageclass <name_of_storageclass> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'