我在EKS上用nodegroup將Elasticsearch集群部署到K8S。我為集群的存盤申請了一個EBS。當我啟動集群時,只有一個pod成功運行,但其他pod卻出現了這樣的錯誤:
Warning FailedAttachVolume 3m33s attachdetach-controller Multi-Attach error for volume string">volume "pvc-4870bd46-2f1e-402a-acf7-005de83e4588" Volume is already string">already used by pod(s) es-0
Warning FailedMount 90s kubelet Unable to attach or mount volumes: unmounted volumes=[persistent-storage]。 unattached volumes=[es-config persistent-storage default-token-pqzkp】。] timed out waiting for the condition
這意味著該存盤已經在使用中。我理解這個卷是由第一個pod使用的,所以其他pod不能使用它。但我不知道當不同的pod使用同一個EBS卷時,如何為它們使用不同的掛載路徑。
下面是該集群的完整規格。
apiVersion: v1
kind: ConfigMap
metadata: ConfigMap
名稱: es-config
資料:
elasticsearch.yml: |
cluster.name: elk-cluster
網路.主機:"0.0.0.0"
bootstrap.memory_lock: false
# discovery.zen.minimum_master_nodes: 2
node.max_local_storage_nodes: 9
discovery.seed_hosts:
- es-0.es-entrypoint.default.svc.cluster.local
- es-1.es-entrypoint.default.svc.cluster.local
- es-2.es-entrypoint.default.svc.cluster.local
ES_JAVA_OPTS: Xms4g Xmx8g
---
apiVersion: apps/v1
kind: StatefulSet
metadata: StatefulSet
name: es
namespace: default
規格:
服務名稱: es-entrypoint
replicas: 3
選擇器:
matchLabels:/span>
名稱: es
模板:
metadata: metadata:
標簽:/span>
名稱: es
規格:
卷數:
- name:es-config
configMap:/span>
名稱: es-config
專案:
- key: elasticsearch.yml
path: elasticsearch.yml
- name:/span> persistent-storage
persistentVolumeClaim:
claimName:ebs-claim
initContainers:
- name: permissions-fix
圖片: busybox
volumeMounts:
- name: persistent-storage
mountPath: /usr/share/elasticsearch/data
command: [ 'chown']
args: [ '1000:1000'/span>, '/usr/share/elasticsearch/data'/span> ]
容器:
- name:/span> es
image: elasticsearch:7.10.1
資源:
requests:/span>
cpu: 2
記憶體: 8Gi
埠:
- name:/span> http
containerPort: 9200
- containerPort:/span> 9300
name: inter-node
volumeMounts:
- name:es-config
mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
subPath: elasticsearch.yml
- name:/span> persistent-storage
mountPath: /usr/share/elasticsearch/data
---
apiVersion: v1
kind: Service
metadata: 服務
名稱: es-entrypoint
規格:
選擇器:/span>
name: es
埠:
- port: 9200
targetPort: 9200
協議: TCP
clusterIP: None
uj5u.com熱心網友回復:
你應該使用volumeClaimTemplates與statefulset,這樣每個pod就能得到它自己的卷。詳情:
volumeClaimTemplates:
- metadata:
名稱: es
規格:
accessModes:
- ReadWriteOnce
資源:
請求:
storage: 5Gi
# storageClassName: <省略以使用默認的StorageClass或指定>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329571.html
標籤:
