KaaS Deployment

This section describes how to prepare your environment and deploy a Kubernetes cluster by using Rackspace Kubernetes-as-a-Service (KaaS). You can deploy a Kubernetes cluster on Rackspace Private Cloud Powered by OpenStack (RPCO) and Rackspace Private Cloud Powered by Red Hat® (RPCR).

  • Overview

  • Deploy managed services

  • Post-deployment procedures

  • Troubleshoot your environment

    Overview

    Rackspace Kubernetes-as-a-Service (KaaS) supports deployment of Kubernetes clusters on Rackspace Private Cloud Powered by OpenStack (RPCO) and Rackspace Private Cloud Powered by Red Hat® (RPCR). The Rackspace KaaS offering combines a number of state-of-the-art DevOps tools that enable cloud operators to quickly and seamlessly integrate Kubernetes into their RPC environments. The solution leverages such open-source technologies as Terraform and KubeSpray that simplify Kubernetes cluster deployment and life cycle management. In RPC deployments, Rackspace KaaS integrates and leverages the underlying RPC components and programs, such as Monitoring as a Service (MaaS), Ceph block storage, and others.

    About kaasctl

    KaaS is shipped with an internal software tool called kaasctl. kaasctl (pronounced “kas-cuttle”) is a command line interface (CLI) that provides functionality to deploy Kubernetes managed services, on the cloud platform. kaasctl is for internal use only by the Rackspace employees.
    You can perform these operations by using the kaasctl commands.
    The following diagram provides a high-level architectural overview of the Rackspace KaaS solution for an OpenStack cloud provider.

Depending on your environment, follow the steps described in the following sections to prepare the environment for Rackspace KaaS:

Deploy managed services

You can deploy the KaaS managed services on an existing Kubernetes cluster that was deployed either by following the procedure described in Building a Kubernetes Cluster with Terraform RKE or acquired as part of a brownfield support agreement. For more information about managed services that KaaS provides, see Services overview.

To deploy managed services, complete the following steps:

  1. If you have not yet done so, start an interactive Docker session as described in start-interactive-docker.
  2. Export the KAASCTL_CLUSTER_DIR environment variable with the path of the cluster directory.
  3. Deploy all KaaS managed services:
kaasctl services deploy

System response:

Deploying all managed services CRDs...

...

Waiting for all pods in rackspace-system to be ready...  
Waiting for all pods in kube-system to be ready...  
rackspace-system ready...  
kube-system ready...  
...done  
Total wait time for all pods: 2.107708203s

You can also select specific managed services to deploy by using the --services or -s flag:

kaasctl services deploy -s velero

To get the list of names of available managed services, run the services list command:

kaasctl services list

Post-deployment procedures

After you deploy a Rackspace KaaS cluster, verify that you organize and save the information about the cluster in the corresponding systems.

Store the OpenStack password

Store the password that you selected while completing the steps in Building a Kubernetes Cluster with Terraform RKE in PasswordSafe for future reference.

To save the password in PasswordSafe, complete the following steps:

  1. Log in to the Rackspace KaaS PasswordSafe project.
  2. Click Add Credential.
  3. In the Category field, specify the customer name. For example, pilz.com.
  4. In the Description field, type the Rackspace KaaS cluster name.
  5. In the Url field, specify the OpenStack endpoint.

Troubleshoot your environment

This section provides troubleshooting tips for issues that occur during the cluster deployment.

Troubleshoot RPCO and RPCR environments

This section describes issues and workarounds for RPCO and RPCR environments.

Error: failed to deploy a managed service


If during the deployment of managed services you get a timeout error similar to the following, that container might be in a failed state:

Error: failed to deploy registry: action function 'waitForDeployment("registry", "rackspace-system")' failed for ManagedService 'registry': timeout

In the example above, the registry container is not available.

To troubleshoot this issue, perform the following steps:

  1. Get the list of pods for all namespaces:
kubectl get pods --all-namespaces

Example of system response:

...  
rackspace-system   registry-5456bb7cb5-w54fr                       1/2       CrashLoopBackOff   10         30m

In the output above the registry container is in CrashLoopBackOff state.

  1. Get the logs for the failed container:

Example:

kubectl logs registry-5456bb7cb5-w54fr  -n rackspace-system -c registry

Example of system response:

time="2019-01-29T17:48:27.893734Z" level=info msg="debug server listening localhost:5001"  
panic: 1 error(s) decoding:

* 'Password' expected type 'string', got unconvertible type 'int'
  1. Review the logs for potential problems.