当前位置: 首页 > news >正文

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.0nodeSets:- name: defaultcount: 1config: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.0http:service:metadata:annotations:cloud.google.com/l4-rbs: "enabled"spec:type: LoadBalancercount: 1elasticsearchRef: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.0nodeSets:- name: defaultcount: 2config:node.store.allow_mmap: falsepodTemplate:spec:containers:- name: elasticsearchresources:requests:memory: 1.5Gicpu: 2limits:memory: 1.5Gicpu: 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.0http:service:metadata:annotations:cloud.google.com/l4-rbs: "enabled"spec:type: LoadBalancercount: 1elasticsearchRef:name: quickstartpodTemplate:spec:containers:- name: kibanaenv:- name: NODE_OPTIONSvalue: "--max-old-space-size=1024"resources:requests:memory: 0.5Gicpu: 0.5limits:memory: 1Gicpu: 1
EOF

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

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

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

gcloud container clusters delete autopilot-cluster-1

下一步

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

  • Elastic Cloud on Kubernetes | Elastic Docs
  • Introducing GKE Autopilot | Google Cloud Blog
  • Autopilot overview | Google Kubernetes Engine (GKE)

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

相关文章:

  • vite+vue3+uniapp引入uview-plus 无效 报警告
  • 无人机低空经济十大前沿创新应用探索-具体做无人机什么呢?优雅草卓伊凡
  • Vuex(一) —— 集中式的状态管理仓库
  • C++ 11 std::unique_ptr 自定义删除器
  • 利用 Python 爬虫获得微店商品详情
  • 游戏架构中的第三方SDK集成艺术:构建安全高效的接入体系
  • C语言:实现杨辉三角的种方法
  • 二分查找----1.搜索插入位置
  • 基于Spring+MyBatis+MySQL实现的监考安排与查询系统设计与实现(附源码+数据库)推荐!
  • OCCT基础类库介绍:Modeling Algorithm - Sewing
  • 使用docker-compose安装kafka
  • FramePack 安装指南(中文)
  • Java八股文——数据结构「排序算法篇」
  • Power Apps - 尝试一下PowerApps中的Plan功能
  • 电子电气诊断架构 --- HPC车载诊断
  • 分布式系统中的 Kafka:流量削峰与异步解耦(二)
  • Ubuntu 22.04LTS下安装D435i深度相机的驱动
  • STM32:AS5600
  • XML在线格式化工具
  • 容器技术与Docker环境部署
  • 手机网站自动跳转代码/爱奇艺科技有限公司
  • 营销型和展示型网站的区别/谷歌google官网下载
  • 浅谈网站建设/成都网站优化平台
  • 绵阳市中医医院网站建设/餐饮营销策划与运营
  • 做公司网站怎么推广/微信销售平台
  • 网站搜索功能怎样做/神马推广