【发布时间】:2022-01-23 07:00:04
【问题描述】:
我将 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 中重新启动自定义种类的正确方法是什么?
【问题讨论】:
-
它将是
kubectl rollout restart <statefulset name>,假设它创建了一个有状态集。检查kubectl get statefulset -
是的,你是对的,它是有状态的。但是我怎么知道它是 statefulset 还是 deployment?
-
describe pod输出中的“控制者”。部署将指向一个副本集。 -
我尝试重新启动 statefulset,命令响应显示成功,但 pod 没有重新启动。我添加了有关问题的详细信息。
-
检查 statefulset 的升级策略。如果设置为
onDelete: kubernetes.io/docs/concepts/workloads/controllers/statefulset/…,则推出重启可能不起作用