Creating a Cluster
You can create managed Kubernetes clusters for the deployment of your containerized applications. OKS enables you to start Kubernetes clusters with a predefined configuration and pre-installed essential services, so that you do not have to manage unnecessary deployments.
Creating a Cluster Using OKS CLI
Before you begin:
|
To create a cluster, use the cluster create command following this syntax:
$ oks-cli cluster create \
--cluster-name NAME_OF_CLUSTER \
--project-name NAME_OF_PROJECT \
--admin "1.2.3.4/32,5.6.7.8/32" \
--version VERSION_NUMBER \
--control-plane "cp.3.masters.small" \
--zone 2b
$ oks-cli cluster create \
--cluster-name NAME_OF_CLUSTER \
--project-name NAME_OF_PROJECT \
--admin "my-ip" \
--version VERSION_NUMBER \
--control-plane "cp.3.masters.small" \
--cp-multi-az
This command contains the following options that you need to specify:
-
cluster-name: The name of the cluster, with a maximum length of 40 alphanumeric characters and dashes (-). This name must start with a lowercase letter and must not end with a dash. It must be unique within the project. -
(optional)
description: The description of the cluster you want to create. -
(optional)
project-name: The name of the project in which you want to create the cluster. -
(optional)
admin: The public IPs or CIDRs allowed to access the cluster at admin-level, separated by commas. If not specified, the cluster is accessible from any IP.Private (RFC 1918) ranges such as
10.0.0.0/8,172.16.0.0/12, or192.168.0.0/16are not allowed (422 ValidationError).You can use the special value
my-ipto automatically add your current IP to the list. -
(optional)
cidr-pods: The IPv4 CIDR range to allocate for pod IPs,/16by default (10.91.0.0/16). The minimal accepted prefix length is/23. -
(optional)
cidr-service: The IPv4 CIDR range to allocate for service (ClusterIP) addresses,/16by default (10.92.0.0/16). The minimal accepted prefix length is/23.-
The CIDRs for your project, pods, and service must not overlap (
409 ResourceConflicterror). -
IPv6 CIDRs are not supported (
422 ValidationError).
-
-
(optional)
control-plane: The desired control plane sizing. For more information, see Control Planes. -
(optional)
cp-multi-az: Enables the multi-Subregion control plane option, to create a multi-Subregion cluster.-
When using this option, the control plane is deployed on three different Subregions to provide high availability.
-
Only high availability control planes can be deployed in a multi-Subregion cluster.
-
-
(optional)
enable-admission-plugins: The list of additional admission plugins you want to enable on the cluster. For more information about the admissions plugins, see the Kubernetes documentation. -
(optional)
disable-admission-plugins: The list of admission plugins from the default list that you want to disable. -
(optional)
disable-api-termination: The ability to delete the cluster through the API. Iftrue, cluster deletion is disabled. Iffalse, it is enabled. -
(optional)
dryrun: Provides an overview of the operations performed by the command without actually running it. You can use this as a safety measure to review the impact of a command before executing it. -
(optional)
filename: The name of the definition file that you want to create the cluster from. -
(optional)
output: The output format for the response (json|yaml). By default, the response format is JSON. The file generated with the cluster definition can be edited and applied by using the-f --filename …command. -
(optional)
quirk: Advanced keys and parameters to pass to the control panel of the project. This option is required for feature requests. -
(optional)
tags: The tags that you want to apply to cluster nodes. -
(optional)
version: One of the supported versions of Kubernetes. For more information about the supported versions, see About OKS > Kubernetes Versions Support. -
(optional)
zone: The Subregion in which you want to deploy the cluster’s control plane.
|
You can display all the available options using the cluster create command following this syntax:
|
The CreateCluster command returns the following elements:
-
project_id: The ID of the project this cluster belongs to. -
id: The Universally Unique Identifier (UUID) of the cluster. -
name: A unique name for the cluster within the project. -
description: An optional description of the cluster. -
cp_multi_az: Iftrue, multi-Subregion deployment is enabled for the control plane. Iffalse, it is disabled. -
cp_subregions: The Subregions on which the control plane components are deployed. -
version: The Kubernetes version deployed for the cluster. For more information, see GetKubernetesVersions. -
cni: The Container Network Interface (CNI) used in the cluster. -
admin_lbu: Iftrue, load balancer administration is enabled for cluster management. Iffalse, it is disabled. -
admission_flags: The configuration of the Kubernetes admission controllers.-
disable_admission_plugins: The list of admission plugins that are disabled. -
enable_admission_plugins: The list of admission plugins that are enabled. -
applied_admission_plugins: The list of admission plugins that are currently applied to the cluster.
-
-
cidr_pods: The CIDR block of the Kubernetes pods' network. -
cidr_service: The CIDR block of the Kubernetes services' network. -
cluster_dns: The IP of the cluster’s DNS service. -
tags: The tags that are applied to cluster nodes. -
auto_maintenances: The configuration of the automated maintenance windows.-
minor_upgrade_maintenance: The maintenance window configuration for minor Kubernetes upgrades.-
enabled: Iftrue, a maintenance window is enabled. -
duration_hours: The duration of the maintenance window, in hours. -
start_hour: The starting time of the maintenance window, in hours. -
week_day: The weekday on which the maintenance window begins. -
tz: The timezone for the maintenance window.
-
-
patch_upgrade_maintenance: The maintenance window configuration for patch Kubernetes upgrades.-
enabled: Iftrue, a maintenance window is enabled. -
duration_hours: The duration of the maintenance window, in hours. -
start_hour: The starting time of the maintenance window, in hours. -
week_day: The weekday on which the maintenance window begins. -
tz: The timezone for the maintenance window.
-
-
-
control_planes: The control plane sizing of the cluster. -
admin_whitelist: The list of CIDR blocks or IP addresses allowed to access the cluster via the Kubernetes API. -
statuses: The status information of the cluster.-
created_at: The timestamp when the cluster was created. -
deleted_at: The timestamp when the cluster was deleted (if applicable). -
updated_at: The timestamp when the cluster was last updated. -
status: The status of the cluster. -
available_upgrade: Any available version of Kubernetes for upgrade (if applicable).
-
-
disable_api_termination: Iftrue, cluster deletion through the API is disabled. Iffalse, it is enabled.
{
"project_id": "877295ad-171c-4f9a-86c5-d45c8b2321fe",
"id": "5e5b232c-b7de-4cc0-9296-faa006b8bd25",
"name": "NAME_OF_CLUSTER",
"description": "",
"cp_multi_az": false,
"cp_subregions": [
"2a"
],
"version": "1.32",
"cni": "cilium",
"admin_lbu": false,
"admission_flags": {
"disable_admission_plugins": [],
"enable_admission_plugins": [],
"applied_admission_plugins": [
"ClusterTrustBundleAttest",
"LimitRanger",
"RuntimeClass",
"ServiceAccount",
"CertificateApproval",
"ResourceQuota",
"PodSecurity",
"Priority",
"NamespaceLifecycle",
"DefaultIngressClass",
"PersistentVolumeClaimResize",
"ValidatingAdmissionPolicy",
"StorageObjectInUseProtection",
"CertificateSigning",
"DefaultStorageClass",
"MutatingAdmissionWebhook",
"CertificateSubjectRestriction",
"TaintNodesByCondition",
"DefaultTolerationSeconds",
"ValidatingAdmissionWebhook"
]
},
"cidr_pods": "10.91.0.0/16",
"cidr_service": "10.92.0.0/16",
"cluster_dns": "10.92.0.10",
"tags": {},
"auto_maintenances": {
"minor_upgrade_maintenance": {
"enabled": true,
"duration_hours": 1,
"start_hour": 12,
"week_day": "Tue",
"tz": "UTC"
},
"patch_upgrade_maintenance": {
"enabled": true,
"duration_hours": 1,
"start_hour": 12,
"week_day": "Tue",
"tz": "UTC"
}
},
"control_planes": "cp.mono.master",
"admin_whitelist": [
"1.2.3.4/32",
"5.6.7.8/32"
],
"statuses": {
"created_at": "2025-01-01T00:02:00.000000Z",
"updated_at": "2025-01-01T00:02:00.000001Z",
"status": "pending",
"available_upgrade": ""
},
"disable_api_termination": false
}
|
You can use the cluster list command to check the cluster’s status. Your cluster is created when its status changes to |
Related Pages
Corresponding API Method