Kubernetes is primarily in charge of handling container orchestration. OpenStack, on the other hand, is a virtual machine management system. Both are generally open-source, while Kubernetes was originally developed by Google under the patent name Borg for a long period. It provided consistent service during this time period. Even the initial version was stable and functionally sound. The development of OpenStack begins from scratch and is highly fragmented.
It, like KVM, manages all virtual machines. The nicest part for cloud providers is that they can run Kubernetes on top of OpenStack. There is also a significant difference between Kubernetes and Docker. Kubernetes can function without Docker, and Docker can function without Kubernetes.