Recently, we can easily see how active Kolla and Kubernetes are in the era of Docker container. There are so many hypes, definitions, abstractions, etc. about Kolla and Kubernetes and you can easily get the information of them by some mouse clicks on Google. However, there is still no any proofs for the cooperation between them in the story of OpenStack deployment, especially in scaling/upgrade/downgrade OpenStack.

Imagine that with Kolla, we can easily deploy OpenStack with the help of Ansible and all the OpenStack services are run in Docker containers. However, Kolla has a drawback of scaling. It is not comfortable for Kolla to scale OpenStack services, each time we have to run again Ansible plays. In contrast, Kubernetes (K8s) has a quite friendly CLI for docker containers management. It has support of multiple operations for containers and containers can be managed in the cluster model of K8s. I will not going deeply into these two projects, you can search on Internet about them, there are so many docs, instructions.

Let's have a look to their cooperation. See the below picture:



As you can see here, we have a Docker registry where we store and distribute Docker images. The K8s cluster will be dockerized and its image is also stored in the registry. The dockerized K8s cluster can be on virtual machine using vagrant, vmware, etc. and the source code of K8s is cloned from github.

The question is, what is the role of Kolla in this model? It is nothing else just provide docker images (stored in registry) of each OpenStack service and initialize config files of OpenStack services. Then K8s will take those OpenStack docker images, config files and deploy OpenStack services on top of K8s cluster.

Based on the above idea, i have made a test on my local machine. And bingo, we have all OpenStack services dockers running. I would like to give a big thank to Liyi Meng - my colleague who help me to fulfill it (hope you have time to read this line :D).