我正在嘗試將 ES 部署到 kubernetes,我在應用到 kube 之前做了這些步驟
- 在我的本地機器上進行 Docker 化
docker run -d --net devnet \
--name my-elastic \
--env ES_JAVA_OPTS="-Xms512m -Xmx512m" \
--env ES_PROTOCOL="http" \
--env discovery.type=single-node \
--env xpack.security.enabled=false \
--env ELASTIC_APM_VERIFY_SERVER_CERT=false \
--env XPACK_LICENSE_SELF_GENERATED_TYPE="basic" \
-p 9200:9200 -p 9300:9300 -it asia.gcr.io/my-project/elasticsearch:latest
- 我使用 JVM 堆大小 512m,因為它不用于生產
- 我禁用驗證證書和 xpack 安全性并使用
http協議,因為仍在我的集群中嘗試非零信任 - 在我當地運行良好
- 我已經為資料創建了 GCE 永久磁盤
- 我已創建卷并宣告了永久磁盤卷
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-elasticsearch-pv
spec:
storageClassName: ""
capacity:
storage: 10G
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
claimRef:
namespace: default
name: my-elasticsearch-pvc
gcePersistentDisk:
pdName: es-disk
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-elasticsearch-pvc
spec:
storageClassName: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10G
- 我已經創建并應用了服務
apiVersion: v1
kind: Service
metadata:
name: my-elastic
spec:
ports:
- name: http-port
port: 9200
targetPort: es-port
selector:
app: my-elastic
type: ClusterIP
- 創建部署檔案并應用此設定
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-elastic
spec:
replicas: 1
selector:
matchLabels:
app: my-elastic
template:
metadata:
labels:
app: my-elastic
spec:
containers:
- name: my-elastic
resources:
requests:
memory: 1Gi
image: asia.gcr.io/my-project/elasticsearch:latest
env:
- name: ES_JAVA_OPTS
value: -Xms512m -Xmx512m
- name: ES_PROTOCOL
value: http
- name: discovery.type
value: single-node
- name: XPACK_LICENSE_SELF_GENERATED_TYPE
value: basic
- name: xpack.security.enabled
value: 'false'
- name: xpack.monitoring.enabled
value: 'false'
ports:
- name: es-port
containerPort: 9200
volumeMounts:
- name: my-elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumes:
- name: my-elasticsearch-data
persistentVolumeClaim:
claimName: my-elasticsearch-pvc
我CrashLoopBackOff在應用部署后得到了,這是我的集群的情況。我在配置上遺漏了什么嗎?

這是日志
"log.level":"ERROR", "message":"uncaught exception in thread [main]", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.ElasticsearchUncaughtExceptionHandler","elasticsearch.node.name":"alodokter-emr-es-5cbd4cd95-bfvld","elasticsearch.cluster.name":"docker-cluster","error.type":"org.elasticsearch.bootstrap.StartupException","error.message":"java.lang.IllegalStateException: failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path?"
uj5u.com熱心網友回復:
從initContainer 使 Elasticsearch (UID: 1000) 成為資料目錄/usr/share/elasticsearch/data的所有者。
$ chown -R 1000:1000 /usr/share/elasticsearch/data
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-elastic
spec:
replicas: 1
selector:
matchLabels:
app: my-elastic
template:
metadata:
labels:
app: my-elastic
spec:
initContainers:
- name: busybox
image: busybox:1.28
command: ['sh', '-c', "chown -R 1000:1000 /usr/share/elasticsearch/data"]
volumeMounts:
- name: my-elasticsearch-data
mountPath: /usr/share/elasticsearch/data
containers:
- name: my-elastic
resources:
requests:
memory: 1Gi
image: asia.gcr.io/my-project/elasticsearch:latest
env:
- name: ES_JAVA_OPTS
value: -Xms512m -Xmx512m
- name: ES_PROTOCOL
value: http
- name: discovery.type
value: single-node
- name: XPACK_LICENSE_SELF_GENERATED_TYPE
value: basic
- name: xpack.security.enabled
value: 'false'
- name: xpack.monitoring.enabled
value: 'false'
ports:
- name: es-port
containerPort: 9200
volumeMounts:
- name: my-elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumes:
- name: my-elasticsearch-data
persistentVolumeClaim:
claimName: my-elasticsearch-pvc
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492396.html
標籤:码头工人 弹性搜索 Kubernetes
