首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字海洋管理库伯奈特卷处于待定状态

数字海洋管理库伯奈特卷处于待定状态
EN

Stack Overflow用户
提问于 2019-11-05 13:16:41
回答 2查看 2K关注 0票数 2

这并不是数字海洋的具体情况,如果这是一种预期的行为,这将是一个很好的验证。

我试图在DO托管Kubernetes集群上安装ElasticSearch集群,并使用来自ElasticSearch 本身的舵图

他们说,我需要在一个storageClassName中指定一个volumeClaimTemplate,以便使用由managed服务提供的卷。对于DO,根据他们的do-block-storages文档。似乎也没有必要定义PVC,头盔图表应该自己来定义它。

这是我正在使用的配置

代码语言:javascript
复制
# Specify node pool
nodeSelector:
    doks.digitalocean.com/node-pool: elasticsearch

# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"

# Allocate smaller chunks of memory per pod.
resources:
  requests:
    cpu: "100m"
    memory: "512M"
  limits:
    cpu: "1000m"
    memory: "512M"

# Specify Digital Ocean storage
# Request smaller persistent volumes.
volumeClaimTemplate:
  accessModes: [ "ReadWriteOnce" ]
  storageClassName: do-block-storage
  resources:
    requests:
      storage: 10Gi
extraInitContainers: |
  - name: create
    image: busybox:1.28
    command: ['mkdir', '/usr/share/elasticsearch/data/nodes/']
    volumeMounts:
    - mountPath: /usr/share/elasticsearch/data
      name: elasticsearch-master
  - name: file-permissions
    image: busybox:1.28
    command: ['chown', '-R', '1000:1000', '/usr/share/elasticsearch/']
    volumeMounts:
    - mountPath: /usr/share/elasticsearch/data
      name: elasticsearch-master

我正在用terraform来设置舵图,但不管怎么说,你要用哪种方式来做这件事并不重要:

代码语言:javascript
复制
resource "helm_release" "elasticsearch" {
  name      = "elasticsearch"
  chart     = "elastic/elasticsearch"
  namespace = "elasticsearch"

  values = [
    file("charts/elasticsearch.yaml")
  ]
}

下面是我在检查吊舱日志时得到的信息:

代码语言:javascript
复制
51s         Normal    Provisioning           persistentvolumeclaim/elasticsearch-master-elasticsearch-master-2   External provisioner is provisioning volume for claim "elasticsearch/elasticsearch-master-elasticsearch-master-2"
2m28s       Normal    ExternalProvisioning   persistentvolumeclaim/elasticsearch-master-elasticsearch-master-2   waiting for a volume to be created, either by external provisioner "dobs.csi.digitalocean.com" or manually created by system administrator

我很确定问题出在书上。它应该是由kubernetes自动提供的。描述持久存储的结果如下:

代码语言:javascript
复制
holms@debian ~/D/c/s/b/t/s/post-infra> kubectl describe pvc elasticsearch-master-elasticsearch-master-0 --namespace elasticsearch
Name:          elasticsearch-master-elasticsearch-master-0
Namespace:     elasticsearch
StorageClass:  do-block-storage
Status:        Pending
Volume:        
Labels:        app=elasticsearch-master
Annotations:   volume.beta.kubernetes.io/storage-provisioner: dobs.csi.digitalocean.com
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Mounted By:    elasticsearch-master-0
Events:
  Type    Reason                Age                    From                                                                              Message
  ----    ------                ----                   ----                                                                              -------
  Normal  Provisioning          4m57s (x176 over 14h)  dobs.csi.digitalocean.com_master-setupad-eu_04e43747-fafb-11e9-b7dd-e6fd8fbff586  External provisioner is provisioning volume for claim "elasticsearch/elasticsearch-master-elasticsearch-master-0"
  Normal  ExternalProvisioning  93s (x441 over 111m)   persistentvolume-controller                                                       waiting for a volume to be created, either by external provisioner "dobs.csi.digitalocean.com" or manually created by system administrator

我已经谷歌所有的东西,似乎一切都是正确的,而且音量应该是上升的这是预期的行为,还是我应该要求支持来检查他们那边发生了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-11 22:29:30

多么奇怪的情况,在我将10Gi改为10G之后,它就开始工作了。也许它必须对存储类做一些事情--它是self,但是它开始工作了。

票数 -1
EN

Stack Overflow用户

发布于 2019-11-05 18:20:15

是的,这是预期的行为。此图表可能与数字海洋库伯奈特斯服务不兼容。

数字海洋文档在“已知问题”一节中有以下信息:

  • 对在Kubernetes中调整DigitalOcean块存储卷大小的支持尚未实现。
  • 在DigitalOcean控制面板中,在Kubernetes页面之外列出了集群资源(工作节点、负载平衡器和块存储卷)。如果在控制面板中重命名或以其他方式修改这些资源,则可能会使它们对群集不可用,或导致调节器提供替换资源。要避免这种情况,只需使用kubectl或控制面板的Kubernetes页面来管理集群资源。

图表/稳定/弹性搜索中提到了一些具体的要求:

先决条件细节

  • Kubernetes 1.10+
  • 对底层基础设施的PV动态配置支持

您可以向数字海洋支持请求帮助,也可以尝试在没有舵机图表的情况下部署ElasticSearch。

github甚至提到:

这个图表的自动化测试目前只在GKE (引擎)上运行。

更新:

同样的问题也出现在我的kubeadm ha集群中。

然而,通过手动为我的PersistentVolumes创建storageclass,我设法让它工作起来。

我的存储库定义:storageclass.yaml

代码语言:javascript
复制
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ssd
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
parameters:
  type: pd-ssd
代码语言:javascript
复制
$ kubectl apply -f storageclass.yaml
代码语言:javascript
复制
$ kubectl get sc
NAME   PROVISIONER   AGE
ssd    local         50m

我的PersistentVolume定义:pv.yaml

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: ssd
  capacity:
    storage: 30Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - <name of the node>
代码语言:javascript
复制
kubectl apply -f pv.yaml

在那之后,我运行了头盔图表:

代码语言:javascript
复制
helm install stable/elasticsearch --name my-release --set data.persistence.storageClass=ssd,data.storage=30Gi --set data.persistence.storageClass=ssd,master.storage=30Gi

聚氯乙烯终于被绑起来了。

代码语言:javascript
复制
$ kubectl get pvc -A
NAMESPACE   NAME                                     STATUS    VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   AGE
default     data-my-release-elasticsearch-data-0     Bound     task-pv-volume2   30Gi       RWO            ssd            17m
default     data-my-release-elasticsearch-master-0   Pending                                                              17m

请注意,我只手动满足单个pvc和ElasticSearch手动卷配置可能非常低效。

我建议联系自动卷供应解决方案的DO支持。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58712145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档