代码之家  ›  专栏  ›  技术社区  ›  Joey Yi Zhao

如何重新启动Elasticsearch K8S部署

  •  0
  • Joey Yi Zhao  · 技术社区  · 2 年前

    我将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 所以我试着重新启动 状态可执行集 ,

    $ kubectl rollout restart statefulset elk-es-node
    statefulset.apps/elk-es-node restarted
    

    上面的命令说 restarted ,但实际的pod并没有重新启动。

    在K8S中重新启动自定义种类的正确方法是什么?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Bazhikov sridhar    2 年前

    使用- kubectl get all

    标识创建的资源是部署还是状态集- 使用 -n <namespace"> 以及上面的命令,如果您在特定的命名空间中工作。

    假设您使用的是一个statefulset,下面的问题命令可以理解配置它的属性。

    kubectl get statefulset <statefulset-name"> -o yaml > statefulsetContent.yaml

    • 这将在同一目录中创建一个yaml文件名statefulsetContent.yaml。
    • 您可以使用它来探索statefulset中配置的不同选项。

    检查 .spec.updateStrategy 在yaml文件中。基于此,我们可以确定其更新策略。

    以下来自 official documentation

    有两个可能的值:

    • 删除时

    当StatefulSet的 .spec.updateStrategy.type 设置为 OnDelete ,StatefulSet控制器不会自动更新StatefulSet中的Pod。用户必须手动删除Pod,以使控制器创建反映对StatefulSet的修改的新Pod .spec.template

    • 滚动更新

    这个 RollingUpdate 更新策略实现了StatefulSet中Pod的自动滚动更新。这是默认的更新策略。

    作为变通办法,您可以尝试缩小/扩大 statefulset

    kubectl scale sts <statefulset-name"> --replicas=<count">

        2
  •  0
  •   gohm'c    2 年前

    使用ECK作为操作符,不需要使用卷展栏重新启动。应用您更新的Elasticsearch规范,操作员将为您执行滚动更新。如果出于任何原因需要重新启动pod,请使用 kubectl delete pod <es pod> -n <your es namespace> 移除吊舱,操作员将为您旋转新的吊舱。