terraform-provider-google/website/docs/r/container_node_pool.html.markdown
The Magician a815f97513 [terraform-beta] docs for container_cluster and container_node_pool resources (#3330)
<!-- This change is generated by MagicModules. -->
/cc @rrondeau
2019-03-27 14:54:30 -07:00

183 lines
6.2 KiB
Markdown

---
layout: "google"
page_title: "Google: google_container_node_pool"
sidebar_current: "docs-google-container-node-pool"
description: |-
Manages a GKE NodePool resource.
---
# google\_container\_node\_pool
Manages a node pool in a Google Kubernetes Engine (GKE) cluster separately from
the cluster control plane. For more information see [the official documentation](https://cloud.google.com/container-engine/docs/node-pools)
and [the API reference](https://cloud.google.com/container-engine/reference/rest/v1/projects.zones.clusters.nodePools).
### Example Usage - using a separately managed node pool (recommended)
```hcl
resource "google_container_cluster" "primary" {
name = "my-gke-cluster"
location = "us-central1"
# We can't create a cluster with no node pool defined, but we want to only use
# separately managed node pools. So we create the smallest possible default
# node pool and immediately delete it.
remove_default_node_pool = true
initial_node_count = 1
}
resource "google_container_node_pool" "primary_preemptible_nodes" {
name = "my-node-pool"
location = "us-central1"
cluster = "${google_container_cluster.primary.name}"
node_count = 1
node_config {
preemptible = true
machine_type = "n1-standard-1"
oauth_scopes = [
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
}
}
```
### Example Usage - 2 node pools, 1 separately managed + the default node pool
```hcl
resource "google_container_node_pool" "np" {
name = "my-node-pool"
location = "us-central1-a"
cluster = "${google_container_cluster.primary.name}"
node_count = 3
timeouts {
create = "30m"
update = "20m"
}
}
resource "google_container_cluster" "primary" {
name = "marcellus-wallace"
location = "us-central1-a"
initial_node_count = 3
node_locations = [
"us-central1-c",
]
# Setting an empty username and password explicitly disables basic auth
master_auth {
username = ""
password = ""
}
node_config {
oauth_scopes = [
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
metadata {
disable-legacy-endpoints = "true"
}
guest_accelerator {
type = "nvidia-tesla-k80"
count = 1
}
}
}
```
## Argument Reference
* `cluster` - (Required) The cluster to create the node pool for. Cluster must be present in `zone` provided for zonal clusters.
- - -
* `location` - (Optional) The location (region or zone) in which the cluster
resides.
* `zone` - (Optional, Deprecated) The zone in which the cluster resides. `zone`
has been deprecated in favor of `location`.
* `region` - (Optional, Deprecated) The region in which the cluster resides (for
regional clusters). `zone` has been deprecated in favor of `location`.
-> Note: You must specify a `location` for either cluster type or the
type-specific `region` for regional clusters / `zone` for zonal clusters.
- - -
* `autoscaling` - (Optional) Configuration required by cluster autoscaler to adjust
the size of the node pool to the current cluster usage. Structure is documented below.
* `initial_node_count` - (Optional) The initial node count for the pool. Changing this will force
recreation of the resource.
* `management` - (Optional) Node management configuration, wherein auto-repair and
auto-upgrade is configured. Structure is documented below.
* `max_pods_per_node` - (Optional, [Beta](https://terraform.io/docs/providers/google/provider_versions.html)) The maximum number of pods per node in this node pool.
Note that this does not work on node pools which are "route-based" - that is, node
pools belonging to clusters that do not have IP Aliasing enabled.
See the [official documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr)
for more information.
* `name` - (Optional) The name of the node pool. If left blank, Terraform will
auto-generate a unique name.
* `node_config` - (Optional) The node configuration of the pool. See
[google_container_cluster](container_cluster.html) for schema.
* `node_count` - (Optional) The number of nodes per instance group. This field can be used to
update the number of nodes per instance group but should not be used alongside `autoscaling`.
* `project` - (Optional) The ID of the project in which to create the node pool. If blank,
the provider-configured project will be used.
* `version` - (Optional) The Kubernetes version for the nodes in this pool. Note that if this field
and `auto_upgrade` are both specified, they will fight each other for what the node version should
be, so setting both is highly discouraged. While a fuzzy version can be specified, it's
recommended that you specify explicit versions as Terraform will see spurious diffs
when fuzzy versions are used. See the `google_container_engine_versions` data source's
`version_prefix` field to approximate fuzzy versions in a Terraform-compatible way.
The `autoscaling` block supports:
* `min_node_count` - (Required) Minimum number of nodes in the NodePool. Must be >=0 and
<= `max_node_count`.
* `max_node_count` - (Required) Maximum number of nodes in the NodePool. Must be >= min_node_count.
The `management` block supports:
* `auto_repair` - (Optional) Whether the nodes will be automatically repaired.
* `auto_upgrade` - (Optional) Whether the nodes will be automatically upgraded.
<a id="timeouts"></a>
## Timeouts
`google_container_node_pool` provides the following
[Timeouts](/docs/configuration/resources.html#timeouts) configuration options:
- `create` - (Default `30 minutes`) Used for adding node pools
- `update` - (Default `10 minutes`) Used for updates to node pools
- `delete` - (Default `10 minutes`) Used for removing node pools.
## Import
Node pools can be imported using the `project`, `zone`, `cluster` and `name`. If
the project is omitted, the default provider value will be used. Examples:
```
$ terraform import google_container_node_pool.mainpool my-gcp-project/us-east1-a/my-cluster/main-pool
$ terraform import google_container_node_pool.mainpool us-east1-a/my-cluster/main-pool
```