我将一个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:
...我可以看到它已经被正确的部署并且所有的吊舱都在运行。
$ 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 foundElasticsearch使用的是statefulset,所以我尝试重新启动statefulset,
$ kubectl rollout restart statefulset elk-es-node
statefulset.apps/elk-es-node restarted上面的命令说是restarted,但是实际的豆荚没有重新启动。
在K8S中重新启动自定义类型的正确方法是什么?
发布于 2021-12-22 11:09:59
使用- kubectl get all
要确定所创建的资源是部署还是状态集,请在特定的命名空间中使用-n <namespace">和上面的命令。
假设您使用状态集,下面的命令中的问题可以理解配置它的属性。
kubectl get statefulset <statefulset-name"> -o yaml > statefulsetContent.yaml
检查yaml文件中的.spec.updateStrategy。在此基础上,确定其更新策略。
下面是来自正式文件的
有两个可能的值:
当状态集的.spec.updateStrategy.type设置为OnDelete时,StatefulSet控制器将不会自动更新StatefulSet中的Pods。用户必须手动删除Pods,以使控制器创建反映状态集的.spec.template修改的新Pods。
RollingUpdate更新策略实现了对StatefulSet中的Pods的自动滚动更新。这是默认的更新策略。
作为一项工作,您可以尝试缩小/增加statefulset。
kubectl scale sts <statefulset-name"> --replicas=<count">
发布于 2021-12-22 01:28:20
使用ECK作为操作符,您不需要使用rollout重新启动。应用您更新的Elasticsearch规范,操作员将为您执行滚动更新。如果出于任何原因,您需要重新启动一个吊舱,您可以使用kubectl delete pod <es pod> -n <your es namespace>来移除吊舱,并且操作符会为您旋转新的吊舱。
https://stackoverflow.com/questions/70442509
复制相似问题