k3s + Helm 部署 Easysearch
最近学了K8S,为了测试方便测试搭了一个K3S集群,然后使用helm运行一下Easysearch。
参考文档:https://docs.infinilabs.com/easysearch/main/docs/deployment/install-guide/helm/
首先添加helm仓库并更新。
1 | helm repo add infinilabs https://helm.infinilabs.com |
然后新建命名空间,我这里叫做es(下同),也可以使用其他名字。
1 | kubectl create namespace es |
Easysearch 依赖 cert-manager 来处理证书。使用这个命令来安装。
1 | kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml |
否则就会收到如下报错。
1 | resource mapping not found for name: "easysearch-ca-issuer" namespace: "" from "STDIN": no matches for kind "Issuer" in version "cert-manager.io/v1" |
直接执行以下命令,我设置的命名空间固定是 es:
1 | cat << EOF | kubectl apply -n es -f - |
Easysearch Chart 默认开启了安全功能,需要在 es 命名空间下找到一个名为 easysearch-secrets 的 Secret,用来存放集群的初始化密码或通信密钥。
之前创建的是 easysearch-ca-secret(CA 证书),但系统还在找这个基础的 easysearch-secrets。
使用这个创建集群需要的secret:
1 | kubectl create secret generic easysearch-secrets -n es \ |
另外在启动集群之前,别忘记修改max_map_count:
1 | # 临时生效 |
都准备了好了之后我们来使用helm能够很方便的安装Easysearch:
1 | helm install easysearch infinilabs/easysearch -n es |

如果你的某个步骤有问题,修改配置之后需要重启,那么可以直接删除这个pod,然后K3S会自动按照当前配置拉起来一个最新的。
1 | kubectl delete pod easysearch-0 -n es |
在这个过程过,我发现helm里的Easysearch版本比较旧
不需要 uninstall,直接运行 upgrade。这样子就会触发 Kubernetes 的 **RollingUpdate (滚动更新)**:它会先停掉旧的 Pod,挂载原来的数据卷,然后启动 2.0.2 的新容器。
1 | # 使用 upgrade 命令,强行覆盖镜像 Tag |
然后可以使用helm继续安装console。
1 | helm install console infinilabs/console -n es |

我的集群开了http端口,可以进入pod进去call api。但是https没有反应。
1 | kubectl exec -it easysearch-0 -n es -- curl -u admin:easysearchpaswd http://127.0.0.1:9200 |
如果想清理数据或者重装,可以使用这些命令。
1 | # 卸载应用 |
那么在pod中我们怎么访问Easysearch呢?
我用busybox 当做例子,写了三种访问的方式
- 使用POD的IP地址
- 使用service的名字访问
- 使用pod.service访问(其实就是Headless Service)

1 | kubectl run busybox-debug --rm -it --image=busybox -n es -- /bin/sh |
k3s + Helm 部署 Easysearch


