elasticsearch Kubernetes-Ec2-弹性搜索获取0/2个节点可用:2内存不足,elasticsearch,kubernetes,elasticsearch,Kubernetes" /> elasticsearch Kubernetes-Ec2-弹性搜索获取0/2个节点可用:2内存不足,elasticsearch,kubernetes,elasticsearch,Kubernetes" />

elasticsearch Kubernetes-Ec2-弹性搜索获取0/2个节点可用:2内存不足

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

我正在研究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
    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
PV
NAME容量访问模式回收策略状态索赔存储类原因年龄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"}}}'