这并不是数字海洋的具体情况,如果这是一种预期的行为,这将是一个很好的验证。
我试图在DO托管Kubernetes集群上安装ElasticSearch集群,并使用来自ElasticSearch 本身的舵图
他们说,我需要在一个storageClassName中指定一个volumeClaimTemplate,以便使用由managed服务提供的卷。对于DO,根据他们的do-block-storages是文档。似乎也没有必要定义PVC,头盔图表应该自己来定义它。
这是我正在使用的配置
# 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来设置舵图,但不管怎么说,你要用哪种方式来做这件事并不重要:
resource "helm_release" "elasticsearch" {
name = "elasticsearch"
chart = "elastic/elasticsearch"
namespace = "elasticsearch"
values = [
file("charts/elasticsearch.yaml")
]
}下面是我在检查吊舱日志时得到的信息:
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我已经谷歌所有的东西,似乎一切都是正确的,而且音量应该是上升的这是预期的行为,还是我应该要求支持来检查他们那边发生了什么?
发布于 2019-11-11 22:29:30
多么奇怪的情况,在我将10Gi改为10G之后,它就开始工作了。也许它必须对存储类做一些事情--它是self,但是它开始工作了。
发布于 2019-11-05 18:20:15
是的,这是预期的行为。此图表可能与数字海洋库伯奈特斯服务不兼容。
数字海洋文档在“已知问题”一节中有以下信息:
kubectl或控制面板的Kubernetes页面来管理集群资源。在图表/稳定/弹性搜索中提到了一些具体的要求:
先决条件细节
您可以向数字海洋支持请求帮助,也可以尝试在没有舵机图表的情况下部署ElasticSearch。
github甚至提到:
这个图表的自动化测试目前只在GKE (引擎)上运行。
更新:
同样的问题也出现在我的kubeadm ha集群中。
然而,通过手动为我的PersistentVolumes创建storageclass,我设法让它工作起来。
我的存储库定义:storageclass.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: ssd
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
parameters:
type: pd-ssd$ kubectl apply -f storageclass.yaml$ kubectl get sc
NAME PROVISIONER AGE
ssd local 50m我的PersistentVolume定义:pv.yaml
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>kubectl apply -f pv.yaml在那之后,我运行了头盔图表:
helm install stable/elasticsearch --name my-release --set data.persistence.storageClass=ssd,data.storage=30Gi --set data.persistence.storageClass=ssd,master.storage=30Gi聚氯乙烯终于被绑起来了。
$ 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支持。
https://stackoverflow.com/questions/58712145
复制相似问题