---
title: "POST /v2/{+parent}/clusters"
method: POST
path: "/v2/{+parent}/clusters"
tags: ["projects"]
---

# POST /v2/{+parent}/clusters

`POST /v2/{+parent}/clusters`

Creates a cluster within an instance. Note that exactly one of Cluster.serve_nodes and Cluster.cluster_config.cluster_autoscaling_config can be set. If serve_nodes is set to non-zero, then the cluster is manually scaled. If cluster_config.cluster_autoscaling_config is non-empty, then autoscaling is enabled.

## Path parameters

- `parent` string, required

## Query parameters

- `clusterId` string

## Request body

- Cluster — A resizable group of nodes in a particular cloud location, capable of serving all Tables in the parent Instance.
  - `name` string — The unique name of the cluster. Values are of the form `projects/{project}/instances/{instance}/clusters/a-z*`.
  - `location` string — Immutable. The location where this cluster's nodes and storage reside. For best performance, clients should be located as close as possible to this cluster. Currently only zones are supported, so values should be of the form `projects/{project}/locations/{zone}`.
  - `defaultStorageType` 'STORAGE_TYPE_UNSPECIFIED' | 'SSD' | 'HDD' — Immutable. The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden.
  - `nodeScalingFactor` 'NODE_SCALING_FACTOR_UNSPECIFIED' | 'NODE_SCALING_FACTOR_1X' | 'NODE_SCALING_FACTOR_2X' — Immutable. The node scaling factor of this cluster.
  - `encryptionConfig` EncryptionConfig — Cloud Key Management Service (Cloud KMS) settings for a CMEK-protected cluster.
    - `kmsKeyName` string — Describes the Cloud KMS encryption key that will be used to protect the destination Bigtable cluster. The requirements for this key are: 1) The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2) Only regional keys can be used and the region of the CMEK key must match the region of the cluster. Values are of the form `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}`
  - `serveNodes` integer — The number of nodes in the cluster. If no value is set, Cloud Bigtable automatically allocates nodes based on your data footprint and optimized for 50% storage utilization.
  - `state` 'STATE_NOT_KNOWN' | 'READY' | 'CREATING' | 'RESIZING' | 'DISABLED' — Output only. The current state of the cluster.
  - `clusterConfig` ClusterConfig — Configuration for a cluster.
    - `clusterAutoscalingConfig` ClusterAutoscalingConfig — Autoscaling config for a cluster.
      - `autoscalingLimits` AutoscalingLimits — Limits for the number of nodes a Cluster can autoscale up/down to.
        - `minServeNodes` integer — Required. Minimum number of nodes to scale down to.
        - `maxServeNodes` integer — Required. Maximum number of nodes to scale up to.
      - `autoscalingTargets` AutoscalingTargets — The Autoscaling targets for a Cluster. These determine the recommended nodes.
        - `cpuUtilizationPercent` integer — The cpu utilization that the Autoscaler should be trying to achieve. This number is on a scale from 0 (no utilization) to 100 (total utilization), and is limited between 10 and 80, otherwise it will return INVALID_ARGUMENT error.
        - `storageUtilizationGibPerNode` integer — The storage utilization that the Autoscaler should be trying to achieve. This number is limited between 2560 (2.5TiB) and 5120 (5TiB) for a SSD cluster and between 8192 (8TiB) and 16384 (16TiB) for an HDD cluster, otherwise it will return INVALID_ARGUMENT error. If this value is set to 0, it will be treated as if it were set to the default value: 2560 for SSD, 8192 for HDD.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/bigtableadmin.md) · [All operations](https://skmtc.net/google/apis/bigtableadmin/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/bigtableadmin/versions/d59c83bbbf1e/schema)
