这并不是特定于DigitalOcean的,确定这是否是预期行为会非常好。
我正在尝试使用来自ElasticSearch itself的helm chart在DO托管的Kubernetes集群上设置ElasticSearch集群。他们说我需要在
以下是我正在使用的配置。
我正在使用 Terraform 设置 Helm chart,但无论你用什么方法都没关系。
这是我检查 pod 日志时得到的结果:
我相当确定问题是卷。这应该由Kubernetes自动提供。描述持久存储如下:
我已经谷歌了一切,似乎一切都正确,音量应该在 DO 端内没有问题,但它仍然处于挂起状态。这是预期的行为还是我应该要求 DO 支持检查他们那边发生了什么?
我正在尝试使用来自ElasticSearch itself的helm chart在DO托管的Kubernetes集群上设置ElasticSearch集群。他们说我需要在
volumeClaimTemplate
中指定storageClassName
,以便使用由托管Kubernetes服务提供的卷。对于DO来说,根据他们的docs,应该使用do-block-storages
。似乎不需要定义PVC,helm chart应该自己完成。以下是我正在使用的配置。
# 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 设置 Helm chart,但无论你用什么方法都没关系。
resource "helm_release" "elasticsearch" {
name = "elasticsearch"
chart = "elastic/elasticsearch"
namespace = "elasticsearch"
values = [
file("charts/elasticsearch.yaml")
]
}
这是我检查 pod 日志时得到的结果:
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自动提供。描述持久存储如下:
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
我已经谷歌了一切,似乎一切都正确,音量应该在 DO 端内没有问题,但它仍然处于挂起状态。这是预期的行为还是我应该要求 DO 支持检查他们那边发生了什么?
10G
而不是10Gi
。我不知道为什么这样可以工作,但它可以工作,并且我可以在 DO k8s 中重现此错误。 - undefined