copyright | lastupdated | keywords | subcollection | ||
---|---|---|---|---|---|
|
2021-03-22 |
kubernetes, iks |
containers |
{:DomainName: data-hd-keyref="APPDomain"} {:DomainName: data-hd-keyref="DomainName"} {:android: data-hd-operatingsystem="android"} {:api: .ph data-hd-interface='api'} {:apikey: data-credential-placeholder='apikey'} {:app_key: data-hd-keyref="app_key"} {:app_name: data-hd-keyref="app_name"} {:app_secret: data-hd-keyref="app_secret"} {:app_url: data-hd-keyref="app_url"} {:authenticated-content: .authenticated-content} {:beta: .beta} {:c#: data-hd-programlang="c#"} {:cli: .ph data-hd-interface='cli'} {:codeblock: .codeblock} {:curl: .ph data-hd-programlang='curl'} {:deprecated: .deprecated} {:dotnet-standard: .ph data-hd-programlang='dotnet-standard'} {:download: .download} {:external: target="_blank" .external} {:faq: data-hd-content-type='faq'} {:fuzzybunny: .ph data-hd-programlang='fuzzybunny'} {:generic: data-hd-operatingsystem="generic"} {:generic: data-hd-programlang="generic"} {:gif: data-image-type='gif'} {:go: .ph data-hd-programlang='go'} {:help: data-hd-content-type='help'} {:hide-dashboard: .hide-dashboard} {:hide-in-docs: .hide-in-docs} {:important: .important} {:ios: data-hd-operatingsystem="ios"} {:java: .ph data-hd-programlang='java'} {:java: data-hd-programlang="java"} {:javascript: .ph data-hd-programlang='javascript'} {:javascript: data-hd-programlang="javascript"} {:new_window: target="_blank"} {:note .note} {:note: .note} {:objectc data-hd-programlang="objectc"} {:org_name: data-hd-keyref="org_name"} {:php: data-hd-programlang="php"} {:pre: .pre} {:preview: .preview} {:python: .ph data-hd-programlang='python'} {:python: data-hd-programlang="python"} {:route: data-hd-keyref="route"} {:row-headers: .row-headers} {:ruby: .ph data-hd-programlang='ruby'} {:ruby: data-hd-programlang="ruby"} {:runtime: architecture="runtime"} {:runtimeIcon: .runtimeIcon} {:runtimeIconList: .runtimeIconList} {:runtimeLink: .runtimeLink} {:runtimeTitle: .runtimeTitle} {:screen: .screen} {:script: data-hd-video='script'} {:service: architecture="service"} {:service_instance_name: data-hd-keyref="service_instance_name"} {:service_name: data-hd-keyref="service_name"} {:shortdesc: .shortdesc} {:space_name: data-hd-keyref="space_name"} {:step: data-tutorial-type='step'} {:subsection: outputclass="subsection"} {:support: data-reuse='support'} {:swift: .ph data-hd-programlang='swift'} {:swift: data-hd-programlang="swift"} {:table: .aria-labeledby="caption"} {:term: .term} {:tip: .tip} {:tooling-url: data-tooling-url-placeholder='tooling-url'} {:troubleshoot: data-hd-content-type='troubleshoot'} {:tsCauses: .tsCauses} {:tsResolve: .tsResolve} {:tsSymptoms: .tsSymptoms} {:tutorial: data-hd-content-type='tutorial'} {:ui: .ph data-hd-interface='ui'} {:unity: .ph data-hd-programlang='unity'} {:url: data-credential-placeholder='url'} {:user_ID: data-hd-keyref="user_ID"} {:vbnet: .ph data-hd-programlang='vb.net'} {:video: .video}
{: #reservations}
When you have consistent computing needs over a time period of at least one year, create a reservation to reduce the costs of worker nodes in your {{site.data.keyword.containerlong}} clusters. With a reservation, you reserve virtual worker node instances in a contract for a fixed, predictable, and lower price than on-demand instances. {: shortdesc}
Reservations are available for classic infrastructure worker nodes only. {: note}
{: #ri-about}
A reservation is a type of {{site.data.keyword.cloud_notm}} resource that you set up to describe the flavor, location, and other details of worker nodes that you want to purchase. Then, you create contracts for the reservation, which are agreements to pay a certain amount each month for a certain number of worker nodes for 1 or 3 year terms. {: shortdesc}
Review the following diagram for an example scenario of how you might set up your reservation and contracts to use across clusters.
Figure 1. An example scenario of using a reservation for worker nodes in your clusters.Reservation: The reservation contains details such as the container platform, worker node flavor, location, and infrastructure provider.
Contract: The example reservation has two contracts for different terms. One contract is for 10 worker nodes across 3 years. The other contract is for 5 worker nodes across 1 year. Therefore, the total capacity of the reservation is 15 worker nodes.
Clusters: Each cluster is in the same multizone region as the reservation, but can be in a different resource group. Reserved worker nodes from different reservations can be used in different clusters. A cluster can have a mix of reserved and on-demand worker pools.
Worker pools: You can create multiple worker pools in multiple clusters with your reserved worker nodes. Reserved worker nodes are used for the entire worker pool; you cannot mix and match between on-demand and reserved worker nodes in the same worker pool. Reserved worker nodes are used on a first-available basis, which means if you provision a worker pool that uses all of your reserved worker nodes, you have no more reserved worker nodes left for other worker pools. Therefore, you might create separate reservations for each team that owns a worker pool or cluster.
Zones: Because the reservation is created in an {{site.data.keyword.cloud_notm}} multizone region, the reserved worker nodes can be used for clusters in any of the zones. For example, reservations in Washington, DC (US East region) can be used to create classic worker nodes in wdc04
, wdc06
, or wdc07
.
Reserved worker nodes that are used in the worker pools: In this scenario, the development and production environments share a reservation that has a mix of contracts that are used for a mix of worker pools and teams. The reservation still has one unused, 3-year term reserved worker node that can be used for other worker pools or to scale up the existing worker pools. If the production environment needs more than one more worker node, you might resize down some of the worker pools in development, create a worker pool that uses on-demand worker nodes, or add more contracts to the reservation. If you are concerned about a development environment using up your production environment resources, consider creating separate reservations for the different environments.
{: #ri-usage-lifecycle}
How can I use my reservation?
You can use your reservation to create worker pools in new or existing clusters. Your reservation is account-wide, so you can use the reserved worker nodes in different clusters, worker pools, and even resource groups. However, because prices vary by zone, you cannot use reserved worker nodes across different metros or multizone regions. You also cannot used reserved instances from other {{site.data.keyword.cloud_notm}} infrastructure services, such as virtual server instances, for your worker nodes, but must use the {{site.data.keyword.containerlong_notm}} reservations.
Does a reservation guarantee computing capacity in a zone?
Reserving worker nodes does not guarantee compute capacity whenever you want to create a worker pool. Instead, you reserve a certain number of worker nodes for a term so that you lock in the discounted price that is associated with the reservation.
How do I know how many reserved worker nodes I need?
See Sizing your Kubernetes cluster to support your workload.
What kind of workloads are best suited for reservations?
The following workloads are good candidates to run on reserved worker nodes:
- Production workloads
- Mission-critical workloads that must run 24/7
- Predictable workloads that have continuous usage and steady states
- Workloads that you want to increase high availability for by creating replicas in different zones and regions
Can I convert existing on-demand worker nodes to reserved worker nodes to save money?
No. Instead, you can create reservations and contracts for the worker nodes in your clusters. Then, create worker pools in your existing clusters that use the reserved worker nodes. Consider using labels to reschedule your existing workloads to the new reserved worker pools. Then, delete your old, on-demand worker pools.
How do reservations impact quotas?
By default, {{site.data.keyword.containerlong_notm}} sets a certain quota limit on the number of worker nodes that you can have across all clusters in a region. Contracts that exceed the worker node quota are blocked from creating. You can try a different region or increase the quota. If you need more of the resource, contact IBM Support. In the support case, include the new quota limit for the region and infrastructure provider that you want. After the quota is increased, you can create a contract.
What happens when my contract ends? Are my worker nodes deleted?
When a contract ends, your reservation is checked for extra capacity from other contracts. If you have more worker nodes than capacity, the worker nodes that exceed the reservation's total capacity are deleted.
For example, you might have a reservation with one contract for 10 worker nodes and another contract for 5 worker nodes, for a total capacity of 15 worker nodes. You use 14 of the 15 worker nodes. When the 5-worker node contract expires, your reservation total capacity reduces to 10 worker nodes. Therefore, 4 of your 14 running worker nodes are deleted, to make the number of worker nodes equal to the total capacity of 10 reserved worker nodes.
To avoid an unexpected deletion, scale down your worker pools before the contract ends to the remaining capacity in the reservation. Or, add contracts to your reservation so that you continue to have enough reserved capacity for the worker nodes that you need. {: important}
{: #ri-about-billing}
How much is the discount? Can I combine reservations with other discounts?
The discounts vary by the flavor, location, and term of the contract, but typically users realize a significant cost savings compared to on-demand worker nodes.
- 33% or more for 1 year terms.
- Up to 50% for 3 year terms.
These discounted reserved worker nodes are in addition to any current account-level discounts that you might have, such as discounts from an {{site.data.keyword.cloud_notm}} subscription account.
How am I billed? How are my discounts applied?
When you create a contract, a discounted monthly price for the total number of worker nodes is calculated. Then, this cost is applied for each month in the term. You are billed each month for the discounted cost, regardless of how many worker nodes that you use during the month. Keep in mind that the price of each new contract is fixed at the time that the contract is created for the lifetime of the contract.
Consider the following example. You create a contract on 15 December 2020 for 12 worker nodes for a 1 year term, until 15 December 2021. The total discounted cost for all 12 worker nodes for the entire term is calculated at $12,000. For each full month, you are billed a flat rate of $1,000, regardless of how many worker nodes in the reservation are in use. For the first and last months, you are billed a pro-rated amount, according to the dates that the contract is active in the months.
If I don't need reserved worker nodes anymore, can I modify my contract?
No, you cannot modify the terms of the contract, such as the duration, number of worker nodes, or flavor. You can remove any unneeded worker nodes from your clusters, but you cannot get a refund for unused capacity in your reservation.
{: #ri-create}
Create a reservation that you can use to provision worker nodes at a reduced cost by committing to a 1 or 3 year term. {: shortdesc}
Before you begin, make sure that you have the Administrator platform access role for the service in {{site.data.keyword.cloud_notm}} IAM.
- Log in to the {{site.data.keyword.containerlong_notm}} reservations console{: external}.
- Click Create reservation.
- Select the Infrastructure provider to use for your worker nodes.
- Select the Location for your reservation. Keep in mind that you cannnot change the location later.
- Geography: The geographic area to filter locations by.
- Availability: Choose single zone or multizone. For multizone areas, you select specific zones for your worker nodes when you create the worker pool.
- Metro: The metro for the location.
- Configure the Worker nodes for your reservation.
- Click Change flavor to edit the CPU, memory, and other operating systems details of the worker nodes. Keep in mind that you cannot change the flavor for the reservation later.
- Enter the Number of worker nodes to create a contract for the initial reservation. You can add contracts for additional worker nodes later.
- Fill out the Reservation details. For more information about the discounts, see Billing and discounts.
- Contract length: Choose between 1 or 3 years for the initial contract duration. You can add contracts for additional durations later.
- Start date: Choose the date that the contract and billing begin, at 00:00 UTC regardless of your timezone. The contract ends 1 or 3 years after the date that you select, such as 15 December 2020 - 15 December 2021. You can select a future date, but you cannot create worker nodes that use the reservation until that date begins.
- Reservation name: Give your reservation a name. This name is used to generate names for all of the associated contracts, which appear in your billing and usage reports. Consider including brief details on the location and flavor to help when selecting the reservation to create worker pools later.
- In the Summary pane, review the order summary and then click Create. Your reservation is created with the initial contract for worker nodes.
- Optional: To add more capacity to your reservation, you can create more contracts.
- From the {{site.data.keyword.containerlong_notm}} reservations console{: external}, click your reservation.
- In the Contracts section, click Add+.
- Select the Number of worker nodes, Contract length, and Start date for the contract.
- In the Summary pane, review the order summary and then click Create. Your contract is added to the reservation and becomes available to use to provision worker nodes on the start date.
Your reservation is created! Now, use your reservation to provision worker nodes in your cluster or review your reservation usage.
## Using a reservation in a cluster {: #ri-use}
When you create a worker pool in a cluster, you can choose to use your reservation to provision the worker nodes. You can use the same reservation for multiple clusters and worker pools in the same location as the reservation. {: shortdesc}
If you do not have enough capacity in your reservation to complete a worker pool action, such as creating, resizing, rebalancing, or adding a zone, the action is blocked. Instead, add a contract for more worker nodes to your reservation. Or, remove or scale down existing worker pools to add these worker nodes back to your reservation. You might also create the worker pool with on-demand worker nodes. {: note}
Before you begin:
- In {{site.data.keyword.cloud_notm}} IAM, make sure that you have the Operator platform access role for Kubernetes Service for the cluster to create worker pools.
- Create or have an existing a classic cluster in the same metro as the reservation that you want to use. If you want to use worker nodes only from a reservation, you can create a cluster with zero worker nodes, or remove existing, on-demand worker pools from a cluster.
To use the reservation:
- Log in to the Kubernetes clusters console{: external}.
- Select the cluster that you want to use.
- From the cluster menu, select Worker pools.
- Click Add+.
- Fill out the worker pool details.
- Enter the Worker pool name.
- Select the Reservation that you want to use. Keep in mind that the reservation affects the flavor and number of worker nodes that you can provision in this worker pool.
- Select the Worker zones and review the VLAN information.
- For the Worker nodes, increase or decrease the number of worker nodes that you want to create per zone. You can review the percentage of your reservation that creating the worker pool uses. You cannot create a worker pool with more worker nodes than you have in your reservation. To use worker nodes from another reservation, create a different worker pool.
- In the Summary pane, notice that your estimated cost is zero, because your worker pool order uses the reservation. To complete the order, click Create.
{: #ri-review}
You can review your {{site.data.keyword.containerlong_notm}} reservation usage and billing details. {: shortdesc}
Before you begin, make sure that you have the following roles in {{site.data.keyword.cloud_notm}} IAM.
- Viewer platform access role for Kubernetes Service to view reservation usage details.
- Viewer platform access role for Account Management > Billing service to view billing details.
Reservation usage:
- Log in to the {{site.data.keyword.containerlong_notm}} reservations console{: external}.
- Review the Usage column to see how many worker nodes of the total amount are in use, such as
1 of 3 worker nodes
. - Review the Clusters column to see how many clusters have worker nodes that use the reservation.
Billing details:
- Log in to the {{site.data.keyword.cloud_notm}} billing console{: external}.
- From the navigation menu, click Usage.
- From the Services table, find the Kubernetes Service row and click View plans.
- From the plans table, find the row for your reservation name and click View details.
- Review the details for the reserved worker nodes that are associated with the contracts of your reservation.