![]() ![]() faasd - starts all the core services for OpenFaaS: the gateway, NATS, Prometheus and our queue worker.You can see our code which has developed into two main services shipped in a single binary. I found that very confusing, but was reassured that is the way it was designed to work. The containerd client tries to run containers on the host it's executing on and just synchronises state with the containerd socket. Whilst containerd has a socket available, and can be mounted or forwarded, it doesn't work as you would expect. The second was that I fancied doing some learning and low-level coding. There were two main reasons for creating "faasd" - the first was that we were hearing from users that they didn't want to run an entire Kubernetes cluster just to run a handful of functions, APIS or webpages. When you squint at faasd, you see something that looks a lot like a single-node Kubernetes cluster, using the same projects you'd find on most nodes: containerd, runc and CNI. Not because it's technically complex, but there was a severe lack of documentation.Ĭontainer Network Initiative (CNI) filled a gap for us and enabled us to build a network between our containers. Now not a lot changes, because containerd was always there along with runc, we just skip a few levels of indirection.Ĭontainerd doesn't provide networking out of the box, and that was one of the hardest challenges. Over time containerd has shifted into the lime-light and in Kubernetes 1.20, it will take over duties for running containers in Kubernetes clusters. containerd's job was to get things ready for runc - such as pulling images and defining specsĭocker then remained as a thiner layer on top of both of these tools to bring a user-friendly developer-experience, networking, high-level API and CLI.runc was also the driver for the OCI specification runc was a tiny Go binary that had one job: run a container based upon a spec. ![]() The Go version was seen as monolithic by some consumers, particularly the Kubernetes community.ĭocker did many things, and at one point clustering and multi-node orchestration was even added to that list (think Docker Swarm and Docker EE)Īs the codebase was refactored two projects emmerged: containerd and runc. Some time ago the original version of Docker was actually written in Python, and then morphed over time into a Go re-write. I want to tell you a bit about our experience in the OpenFaaS community developing faasd - a portable FaaS framework, just like OpenFaaS, but without the complexity and overheads of a Kubernetes cluster. Multipass was the answer to our woes and we were pleasantly surprised by it and wondered why more people weren't using it every day. To begin with I just used an old 2016 model Dell XPS which gave me everyting I needed, but when others started to contribute, they were using Macs and so we had a problem. This presented a problem which I'd not really encountered before - Docker and Kubernetes on my Mac were no longer enough, I needed a Linux environment. About 18 months ago I started a project which developed directly against containerd.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |