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

# POST /v1/{+parent}/bareMetalNodePools

`POST /v1/{+parent}/bareMetalNodePools`

Creates a new bare metal node pool in a given project, location and Bare Metal cluster.

## Path parameters

- `parent` string, required

## Query parameters

- `bareMetalNodePoolId` string
- `validateOnly` boolean

## Request body

- BareMetalNodePool — Resource that represents a bare metal node pool.
  - `name` string — Immutable. The bare metal node pool resource name.
  - `annotations` object — Annotations on the bare metal node pool. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
  - `nodePoolConfig` BareMetalNodePoolConfig — BareMetalNodePoolConfig describes the configuration of all nodes within a given bare metal node pool.
    - `kubeletConfig` BareMetalKubeletConfig — KubeletConfig defines the modifiable kubelet configurations for bare metal machines. Note: this list includes fields supported in GKE (see https://cloud.google.com/kubernetes-engine/docs/how-to/node-system-config#kubelet-options).
      - `registryPullQps` integer — The limit of registry pulls per second. Setting this value to 0 means no limit. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 5.
      - `registryBurst` integer — The maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_pull_qps. The value must not be a negative number. Updating this field may impact scalability by changing the amount of traffic produced by image pulls. Defaults to 10.
      - `serializeImagePullsDisabled` boolean — Prevents the Kubelet from pulling multiple images at a time. We recommend *not* changing the default value on nodes that run docker daemon with version < 1.9 or an Another Union File System (Aufs) storage backend. Issue https://github.com/kubernetes/kubernetes/issues/10959 has more details.
    - `operatingSystem` 'OPERATING_SYSTEM_UNSPECIFIED' | 'LINUX' — Specifies the nodes operating system (default: LINUX).
    - `nodeConfigs` BareMetalNodeConfig[] — Required. The list of machine addresses in the bare metal node pool.
      - `nodeIp` string — The default IPv4 address for SSH access and Kubernetes node. Example: 192.168.0.1
      - `labels` object — The labels assigned to this node. An object containing a list of key/value pairs. The labels here, unioned with the labels set on BareMetalNodePoolConfig are the set of labels that will be applied to the node. If there are any conflicts, the BareMetalNodeConfig labels take precedence. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    - `labels` object — The labels assigned to nodes of this node pool. An object containing a list of key/value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    - `taints` NodeTaint[] — The initial taints assigned to nodes of this node pool.
      - `key` string — Key associated with the effect.
      - `value` string — Value associated with the effect.
      - `effect` 'EFFECT_UNSPECIFIED' | 'NO_SCHEDULE' | 'PREFER_NO_SCHEDULE' | 'NO_EXECUTE' — The taint effect.
  - `updateTime` string, google-datetime — Output only. The time at which this bare metal node pool was last updated.
  - `state` 'STATE_UNSPECIFIED' | 'PROVISIONING' | 'RUNNING' | 'RECONCILING' | 'STOPPING' | 'ERROR' | 'DEGRADED' — Output only. The current state of the bare metal node pool.
  - `etag` string — This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.
  - `uid` string — Output only. The unique identifier of the bare metal node pool.
  - `displayName` string — The display name for the bare metal node pool.
  - `deleteTime` string, google-datetime — Output only. The time at which this bare metal node pool was deleted. If the resource is not deleted, this must be empty
  - `createTime` string, google-datetime — Output only. The time at which this bare metal node pool was created.
  - `upgradePolicy` BareMetalNodePoolUpgradePolicy — BareMetalNodePoolUpgradePolicy defines the node pool upgrade policy.
    - `parallelUpgradeConfig` BareMetalParallelUpgradeConfig — BareMetalParallelUpgradeConfig defines the parallel upgrade settings for worker node pools.
      - `concurrentNodes` integer — The maximum number of nodes that can be upgraded at once.
      - `minimumAvailableNodes` integer — The minimum number of nodes that should be healthy and available during an upgrade. If set to the default value of 0, it is possible that none of the nodes will be available during an upgrade.
  - `reconciling` boolean — Output only. If set, there are currently changes in flight to the bare metal node pool.
  - `status` ResourceStatus — ResourceStatus describes why a cluster or node pool has a certain status. (e.g., ERROR or DEGRADED).
    - `errorMessage` string — Human-friendly representation of the error message from controller. The error message can be temporary as the controller controller creates a cluster or node pool. If the error message persists for a longer period of time, it can be used to surface error message to indicate real problems requiring user intervention.
    - `versions` Versions — Versions describes the mapping of a given version to the number of machines under this version.
      - `versions` Version[] — Shows the mapping of a given version to the number of machines under this version.
        - `version` string — Resource version.
        - `count` string, int64 — Number of machines under the above version.
    - `conditions` ResourceCondition[] — ResourceCondition provide a standard mechanism for higher-level status reporting from controller.
      - `type` string — Type of the condition. (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady)
      - `message` string — Human-readable message indicating details about last transition.
      - `lastTransitionTime` string, google-datetime — Last time the condition transit from one status to another.
      - `reason` string — Machine-readable message indicating details about last transition.
      - `state` 'STATE_UNSPECIFIED' | 'STATE_TRUE' | 'STATE_FALSE' | 'STATE_UNKNOWN' — state of the condition.
    - `version` string — Reflect current version of the resource.

## Response `200`

Successful response

---

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