Skip to content

Commit 0f339c3

Browse files
Pearl1594Pearl Dsilva
andauthored
Add details for CoreOS replacement with Debian (SystemVM template) + Cluster Autoscaler (#168)
* Add details for CoreOS replacement with Debian (SystemVM template) * Add note on systemvm upgrade changes * Add k8s supported version details * Update create cks cluster form Co-authored-by: Pearl Dsilva <pearl.dsilva@shapeblue.com>
1 parent 09bf83b commit 0f339c3

File tree

5 files changed

+43
-47
lines changed

5 files changed

+43
-47
lines changed
21.1 KB
Loading

source/installguide/management-server/_systemvm.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
Prepare the System VM Template
1717
------------------------------
1818

19+
From Apache CloudStack v4.16 onwards, upgrade path handles systemVM template registration, if not done prior to initiating upgrade.
20+
One may choose, to also omit the systemVM template seeding step during fresh installation of CloudStack, as support has been added to
21+
initiate systemVM template registration for all hypervisors present in the zone when the first secondary storage pool is added.
1922
Secondary storage must be seeded with a template that is used for
2023
CloudStack system VMs.
2124

source/plugins/cloudstack-kubernetes-service.rst

Lines changed: 29 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ CloudStack Kubernetes Service
1515

1616
The Kubernetes Service plugin adds Kubernetes integration to CloudStack. The plugin is disabled by default and an admin can enable it using a Global Setting. It enables users to run containerized services using Kubernetes clusters.
1717

18-
Kubernetes Service plugin uses a CoreOS based template for node VMs for the Kubernetes cluster. CoreOS has been used as it provides docker installation and networking rules needed for Kubernetes by default. In future, different guest OSes might be used. For installation of Kubernetes binaries on cluster nodes, a binaries ISO is used for each Kubernetes version to be made available via CloudStack. This allows faster, offline installation of Kubernetes binaries and docker images along with support for adding multiple versions of Kubernetes for upgrades and running different clusters.
18+
With CoreOS having reached EOL, from 4.16 the Kubernetes Service Plugin will use the existing SystemVM template for deploying kubernetes clusters. For installation of Kubernetes binaries on the cluster nodes, a binaries ISO is used for each Kubernetes version to be made available via CloudStack. This allows faster, offline installation of Kubernetes binaries and docker images along with support for adding multiple versions of Kubernetes for upgrades and running different clusters.
1919

2020
For deployment and setup of Kubernetes on cluster nodes, the plugin uses the Kubernetes tool, 'kubeadm'. kubeadm is the command-line tool for easily provisioning a secure Kubernetes cluster on top of physical or cloud servers or virtual machines. Under the hood, control node(s) of the cluster starts a Kubernetes cluster using kubeadm init command with a custom token, and worker nodes join this Kubernetes cluster using kubeadm join command with the same token. More about kubeadm here: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/. Weave Net CNI provider plugin is used for cluster networking. More about Weave Net provide plugin here: https://www.weave.works/docs/net/latest/kubernetes/kube-addon/.
2121

2222
To access the Kubernetes dashboard securely, the plugin provides access to kubeconfig file data which uses the Kubernetes tool kubectl to run a local proxy and thereby access the dashboard. More about kubectl here: https://kubernetes.io/docs/reference/kubectl/overview/
2323

24-
The service allows creation of Kubernetes clusters using the UI or API. Both UI and API provide the ability to list, delete, scale upgrade, stop and start these clusters.
24+
The service allows creation of Kubernetes clusters using the UI or API. Both UI and API provide the ability to list, delete, scale, upgrade, stop and start these clusters.
2525

2626
Enabling the Kubernetes Service
2727
--------------------------------
@@ -38,9 +38,10 @@ Restart the Management Server to enable the set configuration values.
3838
3939
# service cloudstack-management restart
4040
41-
# service cloudstack-usage restart
41+
Once the Kubernetes service is running the new APIs will become accessible and the UI will show the Kubernetes tab under the Compute section.
4242

43-
Once the Kubernetes service is running the new APIs will become accessible and the UI will start show a Kubernetes Service tab.
43+
**NOTE:**
44+
From ACS 4.16 onwards, if a CKS cluster is to be deployed on VMware, the 'vmware.create.full.clone' configuration parameter will need to be set to true, so as to allow resizing of root volumes of the cluster nodes.
4445

4546
Kubernetes Supported Versions
4647
------------------------------
@@ -66,6 +67,9 @@ Eg:
6667
6768
# ./create-kubernetes-binaries-iso.sh ./ 1.12.5 0.7.1 1.12.0 "https://cloud.weave.works/k8s/net?k8s-version=1.12.5" https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml
6869
70+
**NOTE:**
71+
From ACS 4.16 onwards, Kubernetes versions >= 1.20.x are only supported (https://endoflife.date/kubernetes).
72+
6973
Working with Kubernetes supported version
7074
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7175

@@ -128,29 +132,14 @@ Deleting supported Kubernetes version
128132
deleteKubernetesSupportedVersion API has been provided for admins to delete an existing supported version if it is not used by any Kubernetes cluster in the service. id parameter of the API can be used to pass Kubernetes version to be deleted.
129133

130134
.. note::
131-
addKubernetesSupportedVersion, updatedKubernetesSupportedVersion and deleteKubernetesSupportedVersion APIs are available to admin only
135+
addKubernetesSupportedVersion, updateKubernetesSupportedVersion and deleteKubernetesSupportedVersion APIs are available to root admins only
132136

133137
Kubernetes clusters
134138
--------------------
135139

136-
The Kubernetes service provides the functionality of running and managing Kubernetes clusters. Highly available, scalable Kubernetes clusters can be created to run containerized deployments without having to set up Kubernetes on each container node manually. The service will automatically provision the desired number of virtual machines as per cluster size using the binaries from the given Kubernetes version. Additionally, the service provides the functionality to upgrade and scale clusters. Running clusters can be upgraded to a newer minor or patch Kubernetes version at a time. Running clusters can also be scaled for the number of worker nodes up and down and for the service offering used by each node.
137-
138-
This provides functionality to create Kubernetes clusters for Shared, Isolated and VPC networks in CloudStack, but such networks must be accessible to the CloudStack management server for provisioning virtual machines on the cluster. Template and default network offering must be set Global Settings for the service to create Kubernetes clusters.
139-
140-
.. note::
141-
In case of isolated and VPC networks, if egress rules and ACLs don't allow traffic the setup of the Kubernetes cluster and deployment of pods may fail due to inability of fetching the images from public network.
142-
143-
The following Global Settings value must be set to the name of Template to be used for deploying node virtual machines for the respective hypervisor while creating a Kubernetes cluster:
144-
145-
- **cloud.kubernetes.cluster.template.name.hyperv** (Name of the template to be used for creating Kubernetes cluster nodes on HyperV)
146-
- **cloud.kubernetes.cluster.template.name.kvm** (Name of the template to be used for creating Kubernetes cluster nodes on KVM)
147-
- **cloud.kubernetes.cluster.template.name.vmware** (Name of the template to be used for creating Kubernetes cluster nodes on VMware)
148-
- **cloud.kubernetes.cluster.template.name.xenserver** (Name of the template to be used for creating Kubernetes cluster nodes on Xenserver)
140+
The Kubernetes service provides the functionality of running and managing Kubernetes clusters. Highly available, scalable Kubernetes clusters can be created to run containerized deployments without having to set up Kubernetes on each container node manually. The service will automatically provision the desired number of virtual machines as per cluster size using the binaries corresponding to the provided Kubernetes version. Additionally, the service provides the functionality to upgrade and scale clusters. Running clusters can be upgraded to a newer minor or patch Kubernetes version at a time. Running clusters can also be scaled up or down based on the number of worker nodes provided and to the service offering used by each node.
149141

150-
Using a CoreOS template is required - you can find CoreOS templates for CloudStack here, http://dl.openvm.eu/cloudstack/coreos/x86_64/
151-
152-
.. note::
153-
For VMware, CoreOS template must be registered with root disk controller as **pvscsi** and NIC adapter type as **Vmxnet3**.
142+
This provides functionality to create Kubernetes clusters for Shared, Isolated and VPC networks in CloudStack, but such networks must be accessible to the CloudStack management server for provisioning virtual machines on the cluster. The default network offering must be set in the Global Settings for the service to create Kubernetes clusters.
154143

155144
The following Global Setting value must be set to the name of Network Offering to be used for creating a new network when no network has been selected while creating a Kubernetes cluster:
156145

@@ -172,7 +161,7 @@ For Kubernetes cluster management, the service provides create, stop, start, sca
172161
Creating a new Kubernetes cluster
173162
##################################
174163

175-
New Kubernetes clusters can be create using API or from UI. User will be provided with a Add Kubernetes Cluster form as shown below,
164+
New Kubernetes clusters can be created using the API or via the UI. User will be provided with an 'Add Kubernetes Cluster' form as shown below,
176165

177166
|cks-create-cluster-form.png|
178167

@@ -227,13 +216,13 @@ For example:
227216
}
228217
}
229218
230-
On successful creation, the new cluster will be automatically started and will show up in Running state. If creation of the new cluster fails it can be in following states:
219+
On successful creation, the new cluster will automatically be started and will show up in Running state. If creation of the new cluster fails it can be in following states:
231220
- Alert – When node virtual machines were successfully provisioned, and cluster API server is accessible but further provisioning steps could not be completed.
232-
- Error – When the service has unable to provision node virtual machines for the cluster or cluster API server is not accessible.
221+
- Error – When the service was unable to provision the node virtual machines for the cluster or if the cluster API server is not accessible.
233222

234223
.. note::
235-
- For CoreOS, a minimum of 2 cores of CPU and 2GB of RAM is needed for deployment. Therefore, the serviceofferingid parameter of createKuberntesCluster API must be provided with the ID of such compute offerings that conform to these requirements.
236-
- Private docker registry related parameters of createKubentesCluster API (dockerregistryusername, dockerregistryusername, dockerregistryurl, dockerregistryemail) provides experimental functionality. To use them during cluster deployment value for global setting, cloud.kubernetes.cluster.experimental.features.enabled, must be set as true by admin beforehand.
224+
- A minimum of 2 cores of CPU and 2GB of RAM is needed for deployment. Therefore, the serviceofferingid parameter of createKubernetesCluster API must be provided with the ID of such compute offerings that conform to these requirements.
225+
- Private docker registry related parameters of createKubenetesCluster API (dockerregistryusername, dockerregistryusername, dockerregistryurl, dockerregistryemail) provides experimental functionality. To use them during cluster deployment value for global setting, cloud.kubernetes.cluster.experimental.features.enabled, must be set to true by admin beforehand.
237226

238227
Listing Kubernetes clusters
239228
############################
@@ -245,18 +234,14 @@ listKubernetesCluster API can be used to list existing Kubernetes clusters. id p
245234
Stopping Kubernetes cluster
246235
############################
247236

248-
A running Kubernetes cluster can be stopped using both the API and |cks-stop-action.png| action icon from UI. action icon is shown for a running cluster in the UI.
249-
250-
stopKubernetesCluster can be used to stop a running cluster. It takes id of the cluster as the input parameter.
237+
A running Kubernetes cluster can be stopped using either the stopKubernetesCluster API which takes id of the cluster as an input parameter or |cks-stop-action.png| action icon from UI. action icon is shown for a running cluster in the UI.
251238

252239
Starting a stopped Kubernetes cluster
253240
######################################
254241

255-
A stopped Kubernetes cluster can be started using both API and the |cks-start-action.png| action icon from UI. action icon is shown for a stopped cluster in the UI.
242+
A stopped Kubernetes cluster can be started using either the startKubernetesCluster API which takes id of the cluster as the input parameter or the |cks-start-action.png| action icon from UI. action icon is shown for a stopped cluster in the UI.
256243

257-
startKubernetesCluster can be used to start a stopped cluster. It takes id of the cluster as the input parameter.
258-
259-
When the service fails to start a stopped cluster, the cluster will show in Alert state else it will show in Running state.
244+
When the service fails to start a stopped cluster, the cluster will show in Alert state else it will show up as Running.
260245

261246
Scaling Kubernetes cluster
262247
###########################
@@ -265,15 +250,15 @@ A running or stopped Kubernetes cluster can be scaled using both API and UI. |ck
265250

266251
|cks-scale-cluster-form.png|
267252

268-
scaleKubernetesCluster API can be used to scale a running (or stopped cluster) for a desired cluster size and service offering. It takes following parameters as input,
253+
scaleKubernetesCluster API can be used to scale a running (or stopped cluster) to a desired cluster size and service offering. It takes the following parameters as input:
269254

270255
- **id** (the ID of the Kubernetes cluster to be scaled; Required)
271256
- **serviceofferingid** (the ID of the new service offering for the virtual machines in the cluster)
272257
- **size** (number of Kubernetes cluster worker nodes)
273258

274-
Only running Kubernetes clusters can be scaled for size. When the service fails to scale the cluster, the cluster will show in Alert state else if the scaling is successfull cluster will show up in Running state.
259+
Only running Kubernetes clusters can be scaled in size. When the service fails to scale the cluster, the cluster will show in Alert state else if the scaling is successfull cluster will show up in Running state.
275260

276-
Note: Only upscaling is supported while scaling clusters for service offering.
261+
Note: Only up scaling is supported while scaling clusters for service offering.
277262

278263
Upgrading Kubernetes cluster
279264
#############################
@@ -282,30 +267,28 @@ A running Kubernetes cluster can be upgraded using both API and UI. |cks-upgrade
282267

283268
|cks-upgrade-cluster-form.png|
284269

285-
upgradeKubernetesCluster API can be used to upgrade a running cluster. It takes following parameters as input:
270+
upgradeKubernetesCluster API can be used to upgrade a running cluster. It takes the following parameters as input:
286271

287272
- **id** (the ID of the Kubernetes cluster to be upgraded; Required)
288273
- **kubernetesversionid** (Kubernetes version with which cluster to be launched; Required)
289274

290-
When the service fails to upgrade the cluster, the cluster will show in Alert state. If the upgrade has been successful cluster will show in Running state.
275+
When the service fails to upgrade the cluster, the cluster will show up in Alert state, else if successful, the cluster appears Running state.
291276

292277
.. note:: Kubernetes can be upgraded from one MINOR version to the next MINOR version, or between PATCH versions of the same MINOR. That is, you cannot skip MINOR versions when you upgrade. For example, you can upgrade from 1.y to 1.y+1, but not from 1.y to 1.y+2. Therefore, service can upgrade running clusters in the similar manner only.
293278

294279
Deleting Kubernetes cluster
295280
############################
296281

297-
Both UI and API can be used to delete a created Kubernetes cluster. |cks-delete-action.png| action icon will be available in UI to delete a cluster.
298-
299-
deleteKubernetesCluster can be used to delete a cluster. It takes id of the cluster as the input parameter.
282+
A kubernetes cluster can be deleted using either the deleteKubernetesCluster API which takes cluster id as the input parameter or the |cks-delete-action.png| action icon from the UI.
300283

301-
The Kubernetes service runs a background state scanner process which regularly checks for cluster health. For clusters in Alert state, this background process verifies their state and moves them to Running state if all node virtual machines for the cluster are running and API server for the cluster is accessible.
284+
The Kubernetes service runs a background state scanner process which regularly checks the cluster health. For clusters in Alert state, this background process verifies their state and moves them to Running state if all node virtual machines of the cluster are running and the API server for the cluster is accessible.
302285

303286
Working with Kubernetes cluster
304287
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
305288

306289
|cks-cluster-details-tab.png|
307290

308-
Once a Kubernetes cluster is created successfully and it is running state, it can be accessed using kubectl tool using cluster’s kubeconfig file. The web dashboard can be accessed by running local proxy using kubectl. Deployments in the cluster can be done using kubectl or web dashboard. More about deployment in Kubernetes here: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
291+
Once a Kubernetes cluster is created successfully and is in Running state, it can be accessed using the kubectl tool using the cluster’s kubeconfig file. The web dashboard can be accessed by running a local proxy using kubectl. Deployments in the cluster can be done using kubectl or web dashboard. More about deployment in Kubernetes here: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
309292

310293
Accessing Kubernetes cluster
311294
#############################
@@ -331,15 +314,15 @@ The following command can be used, while passing the correct path to kubeconfig
331314
332315
# kubectl --kubeconfig /custom/path/kube.config proxy
333316
334-
Once the proxy is running user can open the following URL in the browser to open the dashboard,
317+
Once the proxy is running, users can open the following URL in the browser to access the dashboard,
335318

336319
.. parsed-literal::
337320
338321
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
339322
340323
|cks-cluster-dashboard.png|
341324

342-
Token for dashboard login can be retrieved using following command
325+
Token for dashboard login can be retrieved using the following command:
343326

344327
.. parsed-literal::
345328

source/upgrading/index.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ Upgrading CloudStack
2828
This document contains the instructions for upgrading CloudStack from prior releases, to the current
2929
release. Please read through all sections carefully before starting.
3030

31+
From ACS 4.16 onwards, seeding of system-VM template is optional, as this will be taken care of by either the upgrade process or
32+
in case of a fresh deployment, registration of the systemVM template(s) is handled during the addition of the first image store to a zone.
33+
The `cloudstack-management` package will now include the systemVM templates for KVM, XenServer and VMWare. In case templates aren't already registered
34+
either prior upgrade or during fresh installation, ACS will handle the template registration automatically, by mounting the secondary store onto the
35+
management server, copying the respective templates to the store and then creating the `template.properties` file.
36+
3137
.. note::
3238
For information on the API changes and issues fixed in this release, please see the Release Notes section of the documentation
3339

source/upgrading/upgrade/_sysvm_templates.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ Update System-VM templates
2828
#. Click Register template.
2929
The Register template dialog box is displayed.
3030

31-
#. In the Register template dialog box, specify the following values
31+
#. From ACS 4.16 onwards, CloudStack will support automatic registration of systemVM
32+
templates, if not done prior initiating upgrade. However, the usual upgrade process
33+
continues to be supported. To register the system VM template do the following:
34+
35+
In the Register template dialog box, specify the following values
3236
(do not change these):
3337

3438
.. cssclass:: table-striped table-bordered table-hover

0 commit comments

Comments
 (0)