我將 Elasticsearch 集群部署到 EKS,下面是規范
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elk
spec:
version: 7.15.2
serviceAccountName: docker-sa
http:
tls:
selfSignedCertificate:
disabled: true
nodeSets:
- name: node
count: 3
config:
...
我可以看到它已正確部署并且所有 pod 都在運行。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
elk-es-node-0 1/1 Running 0 19h
elk-es-node-1 1/1 Running 0 19h
elk-es-node-2 1/1 Running 0 11h
但我無法重新啟動部署Elasticsearch,
$ kubectl rollout restart Elasticsearch elk-es-node
Error from server (NotFound): elasticsearches.elasticsearch.k8s.elastic.co "elk-es-node" not found
Elasticsearch 正在使用,statefulset所以我嘗試重新啟動statefulset,
$ kubectl rollout restart statefulset elk-es-node
statefulset.apps/elk-es-node restarted
上面的命令說restarted,但實際的 pod 沒有重新啟動。
在 K8S 中重新啟動自定義型別的正確方法是什么?
uj5u.com熱心網友回復:
利用 - kubectl get all
要確定創建的資源是部署還是有狀態集 --n <namespace">如果您在特定命名空間中作業,請與上述命令一起使用。
假設您正在使用 statefulset,下面的命令可以了解配置它的屬性。
kubectl get statefulset <statefulset-name"> -o yaml > statefulsetContent.yaml
- 這將在同一目錄中創建一個名為 statefulsetContent.yaml 的 yaml 檔案。
- 您可以使用它來探索 statefulset 中配置的不同選項。
.spec.updateStrategy在 yaml 檔案中檢查。基于此,我們可以確定其更新策略。
以下來自官方檔案
有兩個可能的值:
- 洗掉時
當 StatefulSet
.spec.updateStrategy.type設定為 時OnDelete,StatefulSet 控制器不會自動更新 StatefulSet 中的 Pod。用戶必須手動洗掉 Pod 以使控制器創建新的 Pod,以反映對 StatefulSet 的.spec.template.
- 滾動更新
該
RollingUpdate更新策略工具的自動化,滾動更新豆莢在StatefulSet。這是默認的更新策略。
作為一種解決方法,您可以嘗試縮小/放大statefulset.
kubectl scale sts <statefulset-name"> --replicas=<count">
uj5u.com熱心網友回復:
使用 ECK 作為運算子,您不需要使用 rollout restart。應用您更新的 Elasticsearch 規范,操作員將為您執行滾動更新。如果出于任何原因您需要重新啟動 Pod,您可以使用kubectl delete pod <es pod> -n <your es namespace>Pod 移除 Pod,操作員將為您啟動新的 Pod。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/394516.html
標籤:弹性搜索 Kubernetes
