Kubernetes management

From MediaWiki
Jump to navigation Jump to search

Overview

This page describes the creation and management of Kubernetes clusters in our OpenStack-based stoney cloud using the Magnum container orchestration engine (COE).

Note: This page is a work-in-progress, so if you face any challenges, please contact us with the specific issue.

Images

To list available Kubernetes images, run the following command:

openstack image list -f yaml | yq '[ .[] | select(.Name | match("(?i)kubernetes.*raw")) ]'

Example output:

- ID: 4c6f82a1-1ebc-451d-b989-947cffe72f0e
  Name: 'Ubuntu 22.04 (20240702): Kubernetes v1.28.11 (raw)'
  Status: active
- ID: c2ac4670-1422-4de6-864c-a5b813cddf61
  Name: 'Ubuntu 22.04 (20240702): Kubernetes v1.29.6 (raw)'
  Status: active
- ID: 21ad55f9-21fa-4586-932f-c9ecd20b403d
  Name: 'Ubuntu 22.04 (20240702): Kubernetes v1.30.2 (raw)'
  Status: active

Creation

Creation - Template

# ID or name of the OpenStack Kubernetes image to use:
image=c539d525-d912-4acb-a7c3-bfcaf5f533c5 # Ubuntu 22.04 (20240605): Kubernetes v1.30.1

openstack coe cluster template create my_k8s_template \
  --coe kubernetes \
  --image "$image" \
  --external-network public \
  --master-flavor 'Standard Düdingen c002m0004' \
  --flavor 'Standard Düdingen c002m0004' \
  --public \
  --master-lb-enabled

For a list of all labels see Magnum User Guide - Labels.

Creation - Cluster

# ID or name of the cluster template to use:
template=my_k8s_template

openstack coe cluster create my_k8s_cluster \
  --cluster-template "$template_id" \
  --master-count 1 \
  --node-count 2

Creation - Cluster - Access

To access a created cluster, use openstack coe cluster config to retrieve the cluster's configuration,

# ID or name of the cluster:
cluster=''

openstack coe cluster config --dir ~/.kube "$cluster"

Management

Management - Control plane

TBD

Management - Worker nodes

TBD

Upgrade

# ID or name of the cluster to upgrade:
cluster=''

# ID or name of the template to use:
template=''

openstack coe cluster upgrade "$cluster" "$template"

Deletion

Deletion - Template

# ID or name of the cluster template to delete:
template=''

openstack coe cluster template delete "$template"

Deletion - Cluster

Use openstack coe cluster delete to delete a cluster:

# ID or name of the cluster to delete:
cluster=''

openstack coe cluster delete "$cluster"

Troubleshooting

Troubleshooting - Adjusting the Kubernetes image label kube_version

When creating a cluster using openstack coe cluster create, you might encounter the following error:

Image c539d525-d912-4acb-a7c3-bfcaf5f533c5 does not have a kube_version property.

To fix this problem, add the kube_version property to the image:

# ID or name of the OpenStack Kubernetes image:
image_id=c539d525-d912-4acb-a7c3-bfcaf5f533c5 # Ubuntu 22.04 (20240605): Kubernetes v1.30.1

# The Kubernetes version of the image:
k8s_image_version=v1.30.1

# Adjust the image and add the "kube_version" property:
openstack image set "$image_id" --property kube_version="$k8s_image_version"

After adjust the image property you will have to delete the existing cluster and re-create it using openstack coe cluster create.