2019-12-19 02:02:26 +00:00
---
2020-04-07 18:55:19 +00:00
layout: docs
2020-05-11 21:15:59 +00:00
page_title: Self Hosted Kubernetes
description: Installing Consul on Self Hosted Kubernetes
2019-12-19 02:02:26 +00:00
---
2020-05-11 21:15:59 +00:00
# Self Hosted Kubernetes
2021-11-05 18:27:49 +00:00
Except for creating persistent volumes and ensuring there is a storage class
configured (see below), installing Consul on your
2020-05-11 21:15:59 +00:00
self-hosted Kubernetes cluster is the same process as installing Consul on a
2020-09-14 17:37:35 +00:00
cloud-hosted Kubernetes cluster. See the [Installation Overview](/docs/k8s/installation/install)
2020-05-11 21:15:59 +00:00
for install instructions.
## Predefined Persistent Volume Claims (PVCs)
2021-06-29 16:17:07 +00:00
If running a self-hosted Kubernetes installation, you may need to pre-create
2020-05-11 21:15:59 +00:00
the persistent volumes for the stateful set that the Consul servers run in.
2019-12-19 02:02:26 +00:00
The only way to use a pre-created PVC is to name them in the format Kubernetes expects:
2020-04-09 00:09:01 +00:00
```text
2019-12-19 02:02:26 +00:00
data-<kubernetes namespace>-<helm release name>-consul-server-<ordinal>
```
The Kubernetes namespace you are installing into, Helm release name, and ordinal
must match between your Consul servers and your pre-created PVCs. You only
need as many PVCs as you have Consul servers. For example, given a Kubernetes
namespace of "vault," a release name of "consul," and 5 servers, you would need
to create PVCs with the following names:
2020-04-09 00:09:01 +00:00
```text
2019-12-19 02:02:26 +00:00
data-vault-consul-consul-server-0
data-vault-consul-consul-server-1
data-vault-consul-consul-server-2
data-vault-consul-consul-server-3
data-vault-consul-consul-server-4
```
2021-11-05 18:27:49 +00:00
## Storage Class
Your Kubernetes installation must either have a default storage class specified
(see https://kubernetes.io/docs/concepts/storage/storage-classes/ and https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/)
or you must specify the storage class for the Consul servers:
```yaml
server:
storageClass: your-class
```
See the [Helm reference](/docs/k8s/helm#v-server-storageclass) for that setting for more information.