Knative project is usually explained as building blocks for
“serverless on Kubernetes”. As a result of this implication, most Kubernetes
users are not aware of what Knative can do for their non-serverless workloads:
Better autoscaling and networking for stateless microservices on Kubernetes.
If you are developing containers you must have heard the “single process per
container” mantra. Inherently, there’s nothing wrong1 with running multiple
processes in a container, as long as your ENTRYPOINT
is a proper
init process. Some use cases are having processes are aiding each other
(such as a sidecar proxy process) or porting legacy applications.
Recently, I had to spawn a sidecar process inside a container. Docker’s own
tutorial
for running multiple processes in a container is a good place to start, but not
production-ready. So I outsourced my quest on Twitter to find an
init
replacement that can:
init
process) responsibilities like zombie child
reaping and signal forwarding.In this article I explored pros and cons of some of the options like
supervisord, runit, monit, tini/dumb-init, s6 (audience favorite),
and tini+bash4.x combo (personal favorite).
Skaffold is my top
Kubernetes developer tool of the year so far. Since its accidental
reveal about 3 months ago, it
already got 3,700 stars on GitHub. Clearly the community is lovin’ it.
If you are using Minikube or Docker for Mac/Windows to run your
Kubernetes deployments locally, I have developed a tool to restart containers
automatically when their images are rebuilt: Check out freshpod on GitHub!
How would you debug a Docker container that has no shell, no tools, but a single
statically-compiled executable? Creating docker images FROM scratch
is a trend
on the rise, but is it really taking away our debugging capabilities?
Minikube is a great tool! Almost everybody begins Kubernetes with it and
continues to use it all the time. I figured out a way to use single-node
GKE clusters just like Minikube:
Google Cloud Container Builder was announced last month and I have
been using it ever since. It has a few features that I really love that have gone
unhighlighted. I wrote a testimony on Hacker News when it came out, so I am
going to elaborate on that here.
I recently wrote a log collector that uses Docker’s Container Logs API
to subscribe output streams of containers. Most people don’t collect logs from
containers this way, because they can use well known logging drivers that
Docker supports, so it’s hard to find programs out there consuming this
logs API.
Last month, Azure Container Registry has gone to public preview. Finally
you can start uploading your container images to Azure! This fills an important
gap in the containerized application lifecycle in the Azure ecosystem. It is
also the first production service I participated in building and delivering at
Microsoft.
Nearly two years ago I published my side project Docker.DotNet —an
open source C#/.NET client library for the Docker Remote API. Ever
since, many teams and critical products at Microsoft as well as outside
Microsoft started to depend on this library.