- Elastic Cloud on Kubernetes:
- Overview
- Quickstart
- Operating ECK
- Orchestrating Elastic Stack applications
- Run Elasticsearch on ECK
- JVM heap size
- Node configuration
- Volume claim templates
- Storage recommendations
- HTTP settings and TLS SANs
- Transport settings
- Virtual memory
- Settings managed by ECK
- Secure settings
- Custom configuration files and plugins
- Init containers for plugin downloads
- Update strategy
- Pod disruption budget
- Nodes orchestration
- Advanced Elasticsearch node scheduling
- Create automated snapshots
- Remote clusters
- Readiness probe
- Pod PreStop hook
- Run Kibana on ECK
- Run APM Server on ECK
- Run Elastic Agent on ECK
- Run Enterprise Search on ECK
- Run Beats on ECK
- Secure the Elastic Stack
- Access Elastic Stack services
- Customize Pods
- Manage compute resources
- Upgrade the Elastic Stack version
- Run Elasticsearch on ECK
- Advanced topics
- Reference
- API Reference
- agent.k8s.elastic.co/v1alpha1
- apm.k8s.elastic.co/v1
- apm.k8s.elastic.co/v1beta1
- beat.k8s.elastic.co/v1beta1
- common.k8s.elastic.co/v1
- common.k8s.elastic.co/v1beta1
- elasticsearch.k8s.elastic.co/v1
- elasticsearch.k8s.elastic.co/v1beta1
- enterprisesearch.k8s.elastic.co/v1beta1
- kibana.k8s.elastic.co/v1
- kibana.k8s.elastic.co/v1beta1
- Glossary
- Third-party dependencies
- API Reference
- Release highlights
- 1.4.1 release highlights
- 1.4.0 release highlights
- 1.3.2 release highlights
- 1.3.1 release highlights
- 1.3.0 release highlights
- 1.2.2 release highlights
- 1.2.1 release highlights
- 1.2.0 release highlights
- 1.1.2 release highlights
- 1.1.1 release highlights
- 1.1.0 release highlights
- 1.0.1 release highlights
- 1.0.0 release highlights
- 1.0.0-beta1 release highlights
- Release notes
- Elastic Cloud on Kubernetes version 1.4.1
- Elastic Cloud on Kubernetes version 1.4.0
- Elastic Cloud on Kubernetes version 1.3.2
- Elastic Cloud on Kubernetes version 1.3.1
- Elastic Cloud on Kubernetes version 1.3.0
- Elastic Cloud on Kubernetes version 1.2.2
- Elastic Cloud on Kubernetes version 1.2.1
- Elastic Cloud on Kubernetes version 1.2.0
- Elastic Cloud on Kubernetes version 1.1.2
- Elastic Cloud on Kubernetes version 1.1.1
- Elastic Cloud on Kubernetes version 1.1.0
- Elastic Cloud on Kubernetes version 1.0.1
- Elastic Cloud on Kubernetes version 1.0.0
- Elastic Cloud on Kubernetes version 1.0.0-beta1
Traffic Splitting
editTraffic Splitting
editThe default Kubernetes service created by ECK, named <cluster_name>-es-http
, is configured to include all the Elasticsearch nodes in that cluster. This configuration is good to get started and is adequate for most use cases. However, if you are operating an Elasticsearch cluster with different node types and want control over which nodes handle which types of traffic, you should create additional Kubernetes services yourself.
As an alternative, you can use features provided by third-party software such as service meshes and ingress controllers to achieve more advanced traffic management configurations. Check the recipes directory in the ECK source repository for a few examples.
The service configurations shown in these sections are based on the following Elasticsearch cluster definition:
apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: hulk spec: version: 8.17.2 nodeSets: # Dedicated master nodes - name: master count: 3 config: node.roles: ["master"] # Dedicated data nodes - name: data count: 6 config: node.roles: ["data"] # Dedicated ingest nodes - name: ingest count: 3 config: node.roles: ["ingest"] # Dedicated coordinator nodes - name: coordinator count: 3 config: node.roles: [] # Dedicated machine learning nodes - name: ml count: 3 config: node.roles: ["ml"] # Dedicated transform nodes - name: transform count: 3 config: node.roles: ["transform"]
Create services for exposing different node types
editThe following examples illustrate how to create services for accessing different types of Elasticsearch nodes. The procedure for exposing services publicly is the same as described in Allow public access.
apiVersion: v1 kind: Service metadata: name: hulk-es-coordinator-nodes spec: ports: - name: https port: 9200 targetPort: 9200 selector: elasticsearch.k8s.elastic.co/cluster-name: "hulk" elasticsearch.k8s.elastic.co/node-master: "false" elasticsearch.k8s.elastic.co/node-data: "false" elasticsearch.k8s.elastic.co/node-ingest: "false" elasticsearch.k8s.elastic.co/node-ml: "false" elasticsearch.k8s.elastic.co/node-transform: "false"
apiVersion: v1 kind: Service metadata: name: hulk-es-ingest-nodes spec: ports: - name: https port: 9200 targetPort: 9200 selector: elasticsearch.k8s.elastic.co/cluster-name: "hulk" elasticsearch.k8s.elastic.co/node-ingest: "true"
apiVersion: v1 kind: Service metadata: name: hulk-es-non-master-nodes spec: ports: - name: https port: 9200 targetPort: 9200 selector: elasticsearch.k8s.elastic.co/cluster-name: "hulk" elasticsearch.k8s.elastic.co/node-master: "false"