I am trying to deploy elasticsearch 7.7.1 on kubernetes into a 3 node cluster. I have tried following the documentation for it and when I run kubectl apply -f <manifestfile>.yaml I am getting the following error:
error: unable to recognize "<manifestfile>.yaml": no matches for kind "Elasticsearch" in version "elasticsearch.k8s.elastic.co/v1"
I am not expert because I have never deployed Elasticsearch in k8s.
Nevertheless, it appears you may have missed some step in your deployment procedure. Kubernetes api complains about not being able to recognise the kind "Elasticsearch".
I suppose this happens because there has not been any CRDs created specifying this kind Elasticsearch.
My piece of advice, be sure you are not missing any step before creating the Elasticsearch object. Besides, could you share please the steps you are following to deploy Elasticsearch in kubernetes?
In the container registry of elastic there seems to be images arm64 compatible. Maybe you can deploy elasticsearch (if you dont want the whole stack nor ECK), running in k8s.
You could create a Deployment out of one of these images, configure its storage and inject the config with a ConfigMap.
I suppose that the best approach would be three different StatefulSets for each Elasticsearch pod, if you prefer it can be Deployments, instead.
Expose each Deployment and then make sure Service object uses ports 9200 and 9300. If you do not have 9300 cluster communication is not going to work.
Each of the pods is going to have a different PVC mounted in /var/lib/elasticsearch.
I think this is the best way to proceed, bearing in mind Elasticsearch is a Stateful application.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.