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
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 kaasctlKaaS 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 thekaasctl
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:
- rkaas-rpco
- rkaas-rpcr
After preparing your environment, create your cluster as described in Building a Kubernetes Cluster with Terraform RKE
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:
- If you have not yet done so, start an interactive Docker session as described in start-interactive-docker.
- Export the
KAASCTL_CLUSTER_DIR
environment variable with the path of the cluster directory. - 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:
- Log in to the Rackspace KaaS PasswordSafe project.
- Click Add Credential.
- In the Category field, specify the customer name. For example, pilz.com.
- In the Description field, type the Rackspace KaaS cluster name.
- 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:
- 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.
- 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'
- Review the logs for potential problems.
Updated about 1 year ago