---
title: "Create Virtual Node Group"
method: POST
path: "/ocean/azure/np/virtualNodeGroup"
tags: ["Ocean AKS"]
---

# Create Virtual Node Group

`POST /ocean/azure/np/virtualNodeGroup`

Create a virtual node group.

## Parameters

- `#/paths/~1azure~1costs/get/parameters/0` — unresolved $ref

## Request body

- object
  - `virtualNodeGroup` object, required
    - `name` string, required — Enter a name for the virtual node group.
    - `oceanId` string, required — Ocean cluster identifier.
    - `availabilityZones` string[] — An Array holding Availability Zones, this configures the availability zones the Ocean may launch nodes in per VNG.\ Select zone 0 if you have a workload that requires no availability zone redundancy (AZ=null). You can select this option either alone or together with other availability zones.\ In case zone 0 is selected together with other availability zones, nodes of zone 0 will be scaled only for workloads that demand it.
    - `nodePoolProperties` object — The Ocean Node Pool Properties.
      - `maxPodsPerNode` integer — The maximum number of pods per node in the node pools.
      - `enableNodePublicIP` boolean — enable node public IP.
      - `osDiskSizeGB` integer — The size of the OS disk in GB. For Linux OS, the minimum size is 32GB and for Windows OS the minimum is 128GB.
      - `osDiskType` 'Managed' | 'Ephemeral' — The type of the OS disk.
      - `osType` 'Linux' | 'Windows' — The OS type of the OS disk.
      - `osSKU` 'Ubuntu' | 'AzureLinux' | 'CBLMariner' | 'Windows2019' | 'Windows2022' — The OS SKU of the OS type. Must correlate with the os type.
      - `kubernetesVersion` string — The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.
      - `vnetSubnetIDs` string[] — The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).
      - `podSubnetIDs` string[] — The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).
      - `linuxOSConfig` LinuxOSConfig — unresolved $ref
      - `localDnsProfile` LocalDnsProfile — unresolved $ref
      - `encryptionAtHost` boolean — Whether to enable host-based encryption for nodes launched from this virtual node group. When set to true, use vmSizes.preferredVmSizes to provide compatible VM sizes. IMPORTANT: This setting is immutable at the Azure infrastructure level once nodes are launched. Changing this value requires a roll operation for new nodes to reflect the updated configuration.
    - `nodeCountLimits` NodeCountLimits — unresolved $ref
    - `strategy` Strategy — unresolved $ref
    - `autoScale` AutoScale — unresolved $ref
    - `labels` object — key-value pairs of labels to add to the virtual node group.\ Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\ The following are not allowed: * "kubernetes.azure.com/agentpool" * "kubernetes.io/arch"* "kubernetes.io/os" * "node.kubernetes.io/instance-type" * "topology.kubernetes.io/region" * "topology.kubernetes.io/zone" * "kubernetes.azure.com/cluster" * "kubernetes.azure.com/mode" * "kubernetes.azure.com/role" * "kubernetes.azure.com/scalesetpriority" * "kubernetes.io/hostname" * "kubernetes.azure.com/storageprofile" * "kubernetes.azure.com/storagetier" * "kubernetes.azure.com/instance-sku" * "kubernetes.azure.com/node-image-version" * "kubernetes.azure.com/subnet" * "kubernetes.azure.com/vnet" * "kubernetes.azure.com/ppg" * "kubernetes.azure.com/encrypted-set" * "kubernetes.azure.com/accelerator" * "kubernetes.azure.com/fips_enabled" * "kubernetes.azure.com/os-sku"
    - `taints` object[] — Add taints to a virtual node group.
      - `key` string — Set taint key. The following are not allowed: * "kubernetes.azure.com/scalesetpriority"
      - `value` string — Set taint value.
      - `effect` 'NoSchedule' | 'PreferNoSchedule' | 'NoExecute' | 'PreferNoExecute' — Set taint effect.
    - `tags` object — A maximum of 20 unique key-value pairs for VM tags in the virtual node group. Note: Azure has a tag limit of 50 per node pool.
    - `vmSizes` VmSizes — unresolved $ref
    - `scheduling` Scheduling — unresolved $ref
    - `restrictScaleDown` boolean — When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints). Therefore, Ocean will not scale nodes down unless they are empty.

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/spot/apis/spot-by-flexera-api.md) · [All operations](https://skmtc.net/spot/apis/spot-by-flexera-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spot/spot-by-flexera-api/revisions/72813baf8d47/schema)
