I just started using Kubernetes last week, and I have to say, it's pretty freaking awesome.
I've been running our infrastructure on CoreOS for almost 2 years now. I started implementing it when CoreOS was very young, so I had to deal with a lot of early adopter pains. It took me a long time to learn what Docker was, how it fit together, and how to get everything working with CoreOS's fleet and etcd. Eventually, I had a working cluster setup that would run our services in Docker containers spread across many machines. Some in the cloud, some on bare metal/VMware. It was a great learning experience.
However, I was never really happy with the setup. Despite it being a cluster, I still had to think about the individual nodes. Moreover, my integration with etcd was always a pain in terms of service discovery.
Last week, I decided to clean things up and move to Kubernetes. After watching some videos about how pods, replication controllers, services, and DNS lookups worked, I was convinced that it would greatly simplify our setup.
And it did. I could easily define our services in pods, and expose their ports via services. Then each service could discover one another via DNS lookups. Furthermore, I no longer had to worry about whether my containers were up; as long as the service is running, it "loadbalances" to the underlying pods & containers for me, automatically.
I was able to rip out my etcd integrations, and do away with my fleet unit files. I was even able to vastly simplify my Docker containers to remove some scripts like confd to deal with service hookups and watching etcd keys. And with volume mounting built-in, I'm going to be able to get rid of my overpriced-for-what-I-need PostgreSQL RDS and Redis ElastiCache instances.
And now being able to deploy rolling updates extremely simply means that I no longer have to think about how to push updates to our code. My next todo item is to set up a webhook to roll out new images across the cluster once they've been built on Quay.io and tested via some CI.
I really should blog about all of this, but suffice it to say, I'm extremely impressed with Kubernetes. I'm really glad I took the time this week to dive in.
I've been running our infrastructure on CoreOS for almost 2 years now. I started implementing it when CoreOS was very young, so I had to deal with a lot of early adopter pains. It took me a long time to learn what Docker was, how it fit together, and how to get everything working with CoreOS's fleet and etcd. Eventually, I had a working cluster setup that would run our services in Docker containers spread across many machines. Some in the cloud, some on bare metal/VMware. It was a great learning experience.
However, I was never really happy with the setup. Despite it being a cluster, I still had to think about the individual nodes. Moreover, my integration with etcd was always a pain in terms of service discovery.
Last week, I decided to clean things up and move to Kubernetes. After watching some videos about how pods, replication controllers, services, and DNS lookups worked, I was convinced that it would greatly simplify our setup.
And it did. I could easily define our services in pods, and expose their ports via services. Then each service could discover one another via DNS lookups. Furthermore, I no longer had to worry about whether my containers were up; as long as the service is running, it "loadbalances" to the underlying pods & containers for me, automatically.
I was able to rip out my etcd integrations, and do away with my fleet unit files. I was even able to vastly simplify my Docker containers to remove some scripts like confd to deal with service hookups and watching etcd keys. And with volume mounting built-in, I'm going to be able to get rid of my overpriced-for-what-I-need PostgreSQL RDS and Redis ElastiCache instances.
And now being able to deploy rolling updates extremely simply means that I no longer have to think about how to push updates to our code. My next todo item is to set up a webhook to roll out new images across the cluster once they've been built on Quay.io and tested via some CI.
I really should blog about all of this, but suffice it to say, I'm extremely impressed with Kubernetes. I'm really glad I took the time this week to dive in.