ECK 简化:在 GCP GKE Autopilot 上部署 Elasticsearch

作者:来自 Elastic Eduard Martin

学习如何使用 GKE Autopilot 和 ECK 在 GCP 上部署 Elasticsearch 集群。

想要获得 Elastic 认证?了解下一次 Elasticsearch Engineer 培训的时间!

Elasticsearch 拥有丰富的新功能,可以帮助你为你的使用场景构建最佳搜索解决方案。深入了解我们的示例笔记本,开始免费 cloud 试用,或者立即在本地机器上试用 Elastic。


在本文中,我们将学习如何使用 Autopilot 在 Google Cloud Kubernetes( GKE )上部署 Elasticsearch。

对于 Elasticsearch,我们将使用 Elastic Cloud on Kubernetes( ECK ),这是官方的 Elasticsearch Kubernetes 运维工具,可以简化对所有 Elastic Stack 组件在 Kubernetes 上的部署编排。

什么是 GKE Autopilot?

Google Kubernetes Engine( GKE )Autopilot 提供了一个全托管的 Kubernetes 体验,Google 负责集群配置、节点管理、安全性和扩展性,而开发者专注于部署应用程序,使团队可以借助内置的最佳实践在几分钟内将代码投入生产环境。
来源: https://cloud.google.com/blog/products/containers-kubernetes/introducing‑gke‑autopilot

何时在 Google Cloud 中使用 ECK?

Elastic Cloud on Kubernetes( ECK )最适合那些已经拥有 Kubernetes 基础设施、希望部署具备专用节点角色、高可用性和自动化等高级功能的 Elasticsearch 的组织。

如何设置

  1. 登录 Google Cloud 控制台

  2. 在右上角点击 Cloud Shell 按钮访问控制台,并从那里部署 GKE 集群。或者,你也可以使用 gcloud CLI在教程过程中,记得将项目 ID 替换为你自己的。

  3. 启用 Google Kubernetes Engine API

    点击 "Next"。

    现在,当搜索 Kubernetes Engine API 时,应该显示为已启用。

  4. 在 Cloud Shell 中创建一个 Autopilot 集群。我们将其命名为 autopilot-cluster-1,并将 autopilot-test 替换为你项目的 ID。

    复制代码
    gcloud beta container --project "autopilot-test-457216" clusters create-auto "autopilot-cluster-1" --region "us-central1" --release-channel "regular" --tier "standard" --enable-ip-access --no-enable-google-cloud-access --network "projects/autopilot-test-457216/global/networks/default" --subnetwork "projects/autopilot-test-457216/regions/us-central1/subnetworks/default" --cluster-ipv4-cidr "/17" --binauthz-evaluation-mode=DISABLED
  5. 等待直到准备好。创建大约需要 10 分钟。

    正确设置集群后,会显示确认消息。

  6. 配置 kubectl 命令行访问权限。

    复制代码
    gcloud container clusters get-credentials autopilot-cluster-1 --region us-central1 --project autopilot-test-457216

    你应该看到:

    为 autopilot-cluster-1 生成了 kubeconfig 条目。

  7. 安装 Elastic Cloud on Kubernetes( ECK )operator。

    复制代码
    # Install ECK Custom Resource Definitions
    kubectl create -f https://download.elastic.co/downloads/eck/2.16.1/crds.yaml
    
    # Install the ECK operator
    kubectl apply -f https://download.elastic.co/downloads/eck/2.16.1/operator.yaml
  8. 让我们用默认值创建一个单节点 Elasticsearch 实例。 如果你想查看不同配置的示例,可以访问这个链接

    请注意,如果你没有指定 storageClass,ECK 会使用默认设置。对于 GKE,默认是 standard-rwo,它使用 Compute Engine 持久磁盘 CSI 驱动,并创建一个 1GB 的存储卷。

    复制代码
    cat <<EOF | kubectl apply -f -
    apiVersion: elasticsearch.k8s.elastic.co/v1
    kind: Elasticsearch
    metadata:
      name: quickstart
    spec:
      version: 9.0.0
      nodeSets:
      - name: default
        count: 1
        config:
          node.store.allow_mmap: false
    EOF

    我们禁用了 nmap,因为默认的 GKE 机器的 vm.max_map_count 值太低。禁用它不建议用于生产环境,应该提高 vm.max_map_count 的值。你可以在这里了解更多如何操作。

  9. 我们也来部署一个单节点 Kibana 集群。对于 Kibana,我们将添加一个 LoadBalancer,这样可以获得一个外部 IP,方便我们从设备访问 Kibana。

    复制代码
    cat <<EOF | kubectl apply -f -
    apiVersion: kibana.k8s.elastic.co/v1
    kind: Kibana
    metadata:
      name: quickstart
    spec:
      version: 9.0.0
      http:
        service:
          metadata:
            annotations:
              cloud.google.com/l4-rbs: "enabled"
          spec:
            type: LoadBalancer
      count: 1
      elasticsearchRef:
        name: quickstart
    EOF

    注意这个注解:

    复制代码
    cloud.google.com/l4-rbs: "enabled"

    这非常重要,因为它告诉 Autopilot 提供一个面向公网的 LoadBalancer。如果不设置,LoadBalancer 将是内部的

  10. 检查你的 pods 是否正在运行。

    复制代码
    kubectl get pods
  11. 你也可以运行 kubectl get elasticsearch 和 kubectl get kibana,查看更具体的信息,比如 Elasticsearch 版本、节点和健康状态。

  12. 访问你的服务。

    复制代码
    kubectl get svc

    这会在 EXTERNAL-IP 下显示 Kibana 的外部 URL。LoadBalancer 可能需要几分钟来配置。复制 EXTERNAL-IP 的值

  13. 获取 'elastic' 用户的 Elasticsearch 密码:

    复制代码
    kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode
  14. 通过浏览器访问 Kibana:网址:https://< EXTERNAL_IP >:5601

    用户名: elastic

    密码:28Pao50lr2GpyguX470L2uj5(来自上一步)

  15. 通过浏览器访问时,你会看到欢迎界面。

如果你想更改 Elasticsearch 集群配置,比如更改或调整节点大小,可以用新的设置重新应用 yml 清单:

复制代码
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 9.0.0
  nodeSets:
    - name: default
      count: 2
      config:
        node.store.allow_mmap: false
      podTemplate:
        spec:
          containers:
            - name: elasticsearch
              resources:
                requests:
                  memory: 1.5Gi
                  cpu: 2
                limits:
                  memory: 1.5Gi
                  cpu: 2
EOF

在这个例子中,我们将增加一个节点,并修改内存和 CPU。你可以看到,现在运行 kubectl get elasticsearch 显示有 2 个节点:

Kibana 也同样适用:

复制代码
cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 9.0.0
  http:
    service:
      metadata:
        annotations:
          cloud.google.com/l4-rbs: "enabled"
      spec:
        type: LoadBalancer
  count: 1
  elasticsearchRef:
    name: quickstart
  podTemplate:
    spec:
      containers:
        - name: kibana
          env:
            - name: NODE_OPTIONS
              value: "--max-old-space-size=1024"
          resources:
            requests:
              memory: 0.5Gi
              cpu: 0.5
            limits:
              memory: 1Gi
              cpu: 1
EOF

我们可以调整容器的 CPU/内存,还有 Node.js 的内存使用(max-old-space-size)。

请注意,已有的存储卷声明不能缩小。应用更新后,运维工具会尽量以最小中断时间完成更改。

测试结束后,记得删除集群,避免产生不必要的费用。

复制代码
gcloud container clusters delete autopilot-cluster-1

下一步

如果你想了解更多关于 Kubernetes 和 Google Kubernetes Engine 的内容,可以查看这些文章:

原文:ECK made simple: Deploying Elasticsearch on GCP GKE Autopilot - Elasticsearch Labs

相关推荐
理想家小杨总44 分钟前
2026年|知名谷歌推广平台甄选:外贸独立站建站深度测评
大数据·独立站搭建·谷歌建站·国内外贸建站服务商推荐·外贸出海建站·谷歌独立站搭建·谷歌建站服务商
就是一顿骚操作1 小时前
全球 AI 大事件新闻汇总 2026-08-01
大数据·人工智能
Elasticsearch3 小时前
跳过编写告警规则:NGINX OTel 集成中内置 6 个现成的 ES|QL 模板
elasticsearch
2601_960356384 小时前
数学专业“考证”新思路:为学术与职业双重赋能
大数据
zhixingheyi_tian4 小时前
Mapreduce 之 nativetask
大数据·mapreduce
远航计算机6 小时前
职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册
大数据·人工智能·自动化·aigc·火山引擎
IanSkunk6 小时前
视光中心承接近视防控需求,核心是先把服务流程做成标准化工程
大数据
SEO_juper6 小时前
用Google Search Console数据做内容审计:找出网站上哪些页面在“吃白饭“
大数据·人工智能·外贸独立站
独行侠影a8 小时前
Mojo:专为AI而生的“Python++”,能否真正挑战CUDA与C++的统治地位?
大数据·人工智能·深度学习
greenbbLV8 小时前
中小公司积分商城选型:SaaS与私有化方案对比解析
大数据·前端·小程序