News for hackers. Stuff that matters.
Re:Container technologies at Coinbase: Why Kubernetes is not... by flowerlad on Monday June 08, 2020 @06:02PM (#23461305)
> If you want k8s, you really do need people that know how to maintain it on a more or less full time schedule.

What is the alternative to k8s that does not need people to have any technical knowledge?

To me Kubernetes is extremely attractive because it helps me avoid learning cloud vendors' proprietary technologies. K8s is learn once, use everywhere, which is fantastic.

I am a 1-person venture doing everything from JavaScript/React to maintaining backend infra, and I couldn't have done it without k8s.

Re:Container technologies at Coinbase: Why Kubernetes is not... by zaptheimpaler on Monday June 08, 2020 @07:19PM (#23461850)
Plain old linux is the alternative, which is also "learn once, use everywhere" whether its AWS EC2 or GCP Instances or nearly any machine under the sun.

I don't see how k8s avoids the need to learn about cloud vendor specific tech. e.g searching "aws RDS k8s" gives me a beta github packages and a bunch of blog posts on how to configure it right. It doesn't sound like much less work than learning how to use RDS without k8s - read their docs, figure out the API.

Maybe i'm an "old man yelling at new tech" but meh i just see very little value in k8s because you inevitably need to understand the layer beneath - linux (k8s is far from a non-leaky abstraction imo), PLUS all the complexity of k8s itself. I do see the value when managing a big and complex infra with 100s of servers or something, but very few people have that problem.

Re:Container technologies at Coinbase: Why Kubernetes is not... by flowerlad on Monday June 08, 2020 @08:21PM (#23462295)
> Plain old linux is the alternative

How do you run an application on a cluster of plain old linux machines? How do you do load balancing? How do you scale up and down? How do you update your app without downtime? How do you roll back easily if something goes wrong? How do you ensure all your servers are running the same version of dependencies? How do you update those dependencies? How do you replicate your environment if you want to add a new server to your cluster? If your app has microservices how do services discover each other? How do you mount volumes from cloud storage? How do you update configuration? How do you automatically restart failed applications? How do you monitor if your applications are working? How do you make sure the right number of MongoDB replicas are running at all times? How do you view your log files remotely? How do you port-forward from localhost to your Linux server to test your app locally?

Re:Container technologies at Coinbase: Why Kubernetes is not... by jen20 on Monday June 08, 2020 @11:48PM (#23463467)
These are commonly raised concerns, all of which have answers much simpler than "install this giant distributed system". I'll go ahead and answer them since I take the questions to be in good faith...

> How do you run an application on a cluster of plain old linux machines?

Build a package, install it in an image, run that image in an autoscaling group (or whatever equivalent your cloud of choice offers).

> How do you do load balancing?

An Elastic Load Balancer (v1 or v2), HAProxy, an F5 - this is deployment environment specific (just like in Kubernetes).

> How do you update your app without downtime?

Blue-green deployment, or phased rollout.

> How do you ensure all your servers are running the same version of dependencies?

Build them from a common image.

> How do you update those dependencies?

Update the Packer template that builds that image.

> How do you replicate your environment if you want to add a new server to your cluster?

Start the server from the same image.

> If your app has microservices how do services discover each other?

Consul, or DNS, depending on your appetite.

> How do you mount volumes from cloud storage?

It's a bit unclear exactly what you mean here, but I'll assume you mean either block devices (just attach them at machine boot, or on startup if they need a claim), or NFS.

> How do you update configuration?

Either update Consul and have it propagate configuration, or update a configuration package and push it out.

> How do you automatically restart failed applications?

Systemd restart policy.

> How do you monitor if your applications are working?

From outside - something like pingdom, and some kind of continuous testing. It's critical that this is measured from the perspective of a user.

> How do you make sure the right number of MongoDB replicas are running at all times?

Somewhat flippant answer here: the right number of MongoDB servers is zero. More generally, by limiting the size of an autoscaling group.

> How do you view your log files remotely?

Cloudwatch, Syslog, SSH (depending on requirements).

> How do you port-forward from localhost to your Linux server to test your app locally?

SSH.

Re:Container technologies at Coinbase: Why Kubernetes is not... by hardwaresofton on Tuesday June 09, 2020 @05:02AM (#23464981)
So if you'll indulge me -- this list is exactly why a system like Kubernetes is valuable and why I think personally that it contains a lot of essential complexity.

Kubernetes attempts to do all of the above, which is why it's so massive, and I'd argue it's actually less complex than knowing all the tools above -- but it's an equal degree less universally applicable. In this way, it's perfect for the dev who never wants to "do ops", and less so for the dev that already knows ops (or any regular sysadmin/ops person), because they already know all these answers.

Re:Container technologies at Coinbase: Why Kubernetes is not... by 15155 on Tuesday June 09, 2020 @05:50AM (#23465179)
Devops person here: I already know all of these answers and would still choose Kubernetes over hand-rolling all of this again and again.

"Just use Packer, some AMIs, some ASGs, some CF templates, some ELBs, some EC2 instances!"

No thanks: I'll Terraform an EKS cluster in 30 lines of HCL and deploy my applications with a Dockerfile and a handful of YAML files.

Re:Container technologies at Coinbase: Why Kubernetes is not... by hardwaresofton on Tuesday June 09, 2020 @07:04AM (#23465507)
> CF Templates

Yeah, this is where it kicked in for me. Never mind the fact that all of that is AWS specific and absolutely doesn't help you if you ever move clouds. Great to know all the stuff below, but Kubernetes is a wonderful abstraction layer above that stuff, and it gets better every day.

CF could have become Kubernetes -- it was supposed to be, but it just never got the mixture right (and of course is AWS exclusive).

Re:Container technologies at Coinbase: Why Kubernetes is not... by jen20 on Tuesday June 09, 2020 @09:20AM (#23466412)
I find the ridiculous false dichotomy between Terraform for Kubernetes and Cloudformation for more basic infrastructure even more ironic given that I am still the eighth most prolific contributor to Terraform _over three years after leaving HashiCorp_.
Re:Container technologies at Coinbase: Why Kubernetes is not... by ex_amazon_sde on Tuesday June 09, 2020 @12:58PM (#23468352)
Both options are questionable.
Re:Container technologies at Coinbase: Why Kubernetes is not... by lsofzz on Tuesday June 09, 2020 @06:18AM (#23465300)
> So if you'll indulge me -- this list is exactly why a system like Kubernetes is valuable and why I think personally that it contains a lot of essential complexity.

Yes. I would agree to your statement precisely as an answer to @jen20.

Some things such as getting stateful systems, HPAs and persistent storages were a little tricky initially but a breeze after.

But I do want to mention that you really really need a team to look after it. Without it, it'll bound to be another snowflake.

[edit]: <sigh/> i meant to say stateful when i wrote stateless.

Re:Container technologies at Coinbase: Why Kubernetes is not... by trepatudo on Tuesday June 09, 2020 @03:37AM (#23464591)
Thank you. I use most of this, I've been using it for years and I just don't talk about it because it's hard to argue when people just want to force an idea that k8s is "really the best way of doing things".

Also, haproxy is one of the most reliable software I've ever used.

Re:Container technologies at Coinbase: Why Kubernetes is not... by lsofzz on Tuesday June 09, 2020 @06:26AM (#23465328)
> Thank you. I use most of this, I've been using it for years and I just don't talk about it because it's hard to argue when people just want to force an idea that k8s is "really the best way of doing things".

I wouldn't call it the best way; Rather a good way because Kubernetes does encapsulate the really good bits from scalability, development, security and reliability aspect. It's not a panacea but if you have team bandwidth to run k8s cluster, it's definitely worth a look.

<3 HAProxy. It's a solid piece of software tested to the teeth over the years and is great; Here's the thing: You can run it as your preferred ingress controller too :) https://www.haproxy.com/blog/dissecting-the-haproxy-kubernet...

Re:Container technologies at Coinbase: Why Kubernetes is not... by Longwelwind on Tuesday June 09, 2020 @06:09AM (#23465261)
I feel like your post describes exactly what Kubernetes and container images would bring to your infra.

If you were to deploy a solution like you described, you would get something more complex than simply running Kubernetes, except worse. I suspect that you believe your solution would be simpler only because you are more comfortable with those technologies than with k8s. The more I read criticism of k8s, the more I'm persuaded that what people calls "old boring technologies" truly is "technologies I'm comfortable with".

On top of that, you'd need to separately document everything you do on your infra. The advantage of Docker images over AMI is that you have a file that describes how the image was built. With an AMI, you would need to hope that the guy who created the AMI documented it somewhere (or hope that he has not quit). Same goes for k8s, where configurations are committed into your repository.

At the end of the day, k8s stays a tool that you should use only when needed (and also if you have the capabilities of using it), but I think you shouldn't discard it simply because you are capable of producing the same result by other means. You get a lot more by using k8s, in my opinion.

Re:Container technologies at Coinbase: Why Kubernetes is not... by jen20 on Tuesday June 09, 2020 @09:23AM (#23466430)
> The advantage of Docker images over AMI is that you have a file that describes how the image was built.

https://packer.io - how is this even a discussion?

> the more I'm persuaded that what people calls "old boring technologies" truly is "technologies I'm comfortable with".

My infrastructure runs in Nomad on bare metal. I am by no means opposed to “progress”, I just don’t think Kubernetes is the be-all-and-end-all of infrastructure and would like to have a less hysterical debate about it than the parent to my original post presented.

Re:Container technologies at Coinbase: Why Kubernetes is not... by mvanbaak on Tuesday June 09, 2020 @04:38AM (#23464873)
> Somewhat flippant answer here: the right number of MongoDB servers is zero.

AMEN to this one.

Very nice answer. It's the way we run infra.

Re:Container technologies at Coinbase: Why Kubernetes is not... by dlidstrom on Monday June 15, 2020 @06:34AM (#23525870)
What does this mean?
Re:Container technologies at Coinbase: Why Kubernetes is not... by lenkite on Tuesday June 09, 2020 @01:58AM (#23464094)
I loved this list of succinct answers.
Re:Container technologies at Coinbase: Why Kubernetes is not... by sciurus on Tuesday June 09, 2020 @09:19AM (#23466406)
Great answers.

To be fair though, that's not "Plain old linux" like zaptheimpaler suggested was somehow possible. That's linux plus AWS managed services plus software from Hashicorp. Which is a great stack to be on, but has its own complexities and tradeoffs.

Re:Container technologies at Coinbase: Why Kubernetes is not... by lazzlazzlazz on Tuesday June 09, 2020 @05:12AM (#23465026)
Thanks for this great list of answers. I was startled to see someone vomiting a list of unresearched questions as if they constituted a rebuttal. "Taking the bait" was the right call. Thanks again.
Re:Container technologies at Coinbase: Why Kubernetes is not... by karakanb on Tuesday June 09, 2020 @05:55AM (#23465202)
Would you mind pointing out some examples that you can achieve these on a bare-bones installation in an automated manner? Like, I mean sharing some real examples that I can install and forget. You can deploy the simplest "hello world" webserver in any language of your choice.

>> How do you run an application on a cluster of plain old linux machines?

> Build a package, install it in an image, run that image in an autoscaling group (or whatever equivalent your cloud of choice offers).

How come it is any different than running the Docker image on Kubernetes? The image build process is the same, delegating running the image to the platform is the same, the only difference at this point is the name of the platform you are running. Even if you were deploying ZIP archives to Elastic Beanstalk, if it doesn't work as expected, you'd have to debug it as an outsider, and you'd still have to know about the technology. I don't see how it is any different than Kubernetes.

>> How do you update your app without downtime?

> Blue-green deployment, or phased rollout.

How exactly? There are gazillion ways of doing them, they are rough concepts, what we need is a reliably working setup that requires as much effort from us as possible, and there are absolutely no standards on how to do them. Are you going to use Ansible? Maybe just SSH into the node and change the symlink? Maybe some other ways?

>> How do you replicate your environment if you want to add a new server to your cluster?

> Start the server from the same image.

How do you do that? You'd either do that manually on AWS console, or build some tooling to achieve that. If you were to do that via the autoscaling options the vendor is providing, then it is no different than Kubernetes: if that doesn't work then you'd have to debug regardless of the platform that is managing the autoscaling.

>> If your app has microservices how do services discover each other?

> Consul, or DNS, depending on your appetite

What is the difference between trying to learn how does Consul handle service discovery vs how does Kubernetes handle it?

>> How do you mount volumes from cloud storage?

> It's a bit unclear exactly what you mean here, but I'll assume you mean either block devices (just attach them at machine boot, or on startup if they need a claim), or NFS.

Would you mind sharing examples that are not vendor-specific and that'd be configurable on a per-service fashion easily, hopefully without writing any code?

>> How do you update configuration?

> Either update Consul and have it propagate configuration, or update a configuration package and push it out.

How is this any better than pushing your changes to Kubernetes? I personally don't know how does Consul work or how to update a configuration package and push it out to somewhere, I don't even know where to push them. In this context, learning them is also not any better than learning how to do them on Kubernetes.

>> How do you automatically restart failed applications?

> Systemd restart policy.

So, this means that you'd need to learn how to utilize Systemd properly in order to be able to start running your application and write the configuration for that somewhere, and also deal with propagating that configuration to all the machines.

>> How do you monitor if your applications are working?

> From outside - something like pingdom, and some kind of continuous testing. It's critical that this is measured from the perspective of a user.

The question was not really that. The tools like pingdom won't help you if an internal dependency of your application starts failing suddenly. You need a standardized solution for gathering various standard metrics from various services of yours, things like request rate, error rate, request durations, as well as defining custom metrics on the application level such as open database connections, latencies on dependencies, and so on. You will definitely need a proper metrics solution for running any serious workload, and in addition to that you'll also want to be able to alert on some of these metrics. There is no standardized solution for these problems, which means you'll need to roll your own.

>> How do you view your log files remotely?

> Cloudwatch, Syslog, SSH (depending on requirements).

The proper alternative to the Kubernetes' solution is Cloudwatch, and even then the simplicity of `kubectl logs <pod_name>` is still better than trying to understand how Cloudwatch works.

>> How do you port-forward from localhost to your Linux server to test your app locally?

> SSH.

This is not a trivial setup. Let's say you have a service A running remotely but it is not exposed, meaning that you cannot reach it from your local machine, and you'd like to be able to use that while developing your service B locally, how would you set this up in an easy way?

The points regarding the images are the same points as any Docker image, so it really boils down to the choice and one doesn't have an advantage over the other in this context.

What I am trying to say is: there are quite a lot of problems when running any kind of serious workload, and there are thousands of alternative combinations for solving them, and they were solved even before Kubernetes existed; however, there were no standardized way of doing things, and that's what Kubernetes is allowing people to do. There are definitely downsides of Kubernetes, but trying to point specific examples like these don't help as they are just names of individual software that also have learning curve and they all operate differently. I do wish there was a simpler solution, I wish Docker Swarm succeeded as a strong alternative for Kubernetes for simpler cases as it is brilliant working locally, and I wish we didn't have to deal with all these problems, but it is what it is.

As of today, I can write a Golang web application, prepare a 10-lines Dockerfile, write ~50 lines of YAML and I am good to go: I can deploy this application on any Kubernetes cluster on any cloud provider and have all these stuff defined above automatically. Do I need to add a Python application alongside: I just write another 20-lines Dockerfile for that application, again ~50 lines of YAML for Kubernetes deployment and bam, that's it. For both of these services I have automated recovery, load balancing, auto-scaling, rolling deployments, stateless deployments, aggregated logging, without writing any code for any tooling.

Re:Container technologies at Coinbase: Why Kubernetes is not... by tomerbd on Tuesday June 09, 2020 @04:47AM (#23464922)
I wish I knew to do all this, is there any guide best practice that I can read like a book that includes all above?
Re:Container technologies at Coinbase: Why Kubernetes is not... by ditonal on Monday June 08, 2020 @09:30PM (#23462714)
The difficulty of all that stuff on plain old Linux is overstated and the difficulty of doing that on K8s is understated. And I agree with grandfathers point that if you don’t understand how to do that on plain old Linux you will struggle on K8s. K8s is ok for huge enterprises with tons of engineers but somehow K8s advocates make it seem like learning and operating nginx on ubuntu is this huge challenge when it’s usually not.
[dead]
Re:Container technologies at Coinbase: Why Kubernetes is not... by anang on Tuesday June 09, 2020 @04:42AM (#23464891)
I think the point is more that the complexity of a cluster of VMs that manage the lifecycle of containers is often overkill for a service that would work with nginx installed on Ubuntu, and that often times the former is sold as reducing complexity and the latter as increasing it.
Re:Container technologies at Coinbase: Why Kubernetes is not... by redis_mlc on Tuesday June 09, 2020 @01:51AM (#23464058)
rumanator: the mistake is yours. Please read the parent post again, since you missed any nuance.

I agree with said parent. You can go a long way with ASGs, iptables and yum install - literally the entire first decade of your startup.

In larger companies, just the politics introduced with managing k8s by another dept. is mind-numbing.

Re:Container technologies at Coinbase: Why Kubernetes is not... by rumanator on Tuesday June 09, 2020 @02:14AM (#23464182)
No, the assertion that nginx on ubuntu is equivalent to kubernetes os mind-numbingly wrong, for starters for being entirely and completely oblivious to containers. The comparison isn't even wrong: it simply makes no sense at all.

And no, being able to run software is not equivalent to Kubernetes. It's not even in the same ballpark of the discussion. You are entirely free to go full Amish on your pet projects but let's not pretend that managing a pet server brings any operational advantage over, say, just being able to seamlessly deploy N versions of your app with out-of-the-box support for blue/green deployments and with the help of a fully versioned system that allows to undo and resume operating with a past configuration. You don't do that by flaunting iptables and yum, do you?

If anyone needs to operate a cluster then they need tooling to manage and operate a cluster. Your iptables script isn't it.

Re:Container technologies at Coinbase: Why Kubernetes is not... by redis_mlc on Tuesday June 09, 2020 @02:47AM (#23464333)
> No, the assertion that nginx on ubuntu is equivalent to kubernetes os mind-numbingly wrong

Read the actual post, instead of projecting your nonsense.

Re:Container technologies at Coinbase: Why Kubernetes is not... by yjftsjthsd-h on Monday June 08, 2020 @09:35PM (#23462735)
DNS round-robin sends inbound to 2 haproxy servers, which proxy traffic on to the rest of the cluster. Scaling means "add another box, install your app, add haproxy entry". Service discovery is just an internal-facing haproxy front. If you must have "volumes from cloud storage", you use NFS (but if you can help it, you don't do that). Updates, restarts (including zero-downtime courtesy of draining the node out of haproxy), etc. are all quite doable with SSH and shell scripts. You run an actual monitoring system, because it's not like k8s could monitor server hardware anyways. Likewise, syslog is not exactly novel. I... don't understand why you're port forwarding? Either run on the dev cluster or your laptop.

So yes, you'd need a handful of different systems, but "k8s" is hardly a single system once you have to actually manage it, and most of the parts are simpler.

Re:Container technologies at Coinbase: Why Kubernetes is not... by p_l on Tuesday June 09, 2020 @04:42AM (#23464896)
Having done exactly that in the past, both by hand and with configuration management (including custom scripting that synchronized HAproxy configs etc.), I would say that I can do all of that much, much simpler in k8s.

Installing application and routing it with load balancing, TLS etc and support for draining is really simplified, something that used to require annoying amount of time (it got better as Lua scripting was extended in HAproxy, but by that time I also had k8s).

Resource allocation, including persistent storage (including NFS) is so much easier it's not funny, it makes my old years painful to think about. Syslog is not novel but getting all applications to log the same way was always a PITA, and at least with containers it's a bit easier (I still have to sometimes ship physical logs from containers...).

As for monitoring, that's one of the newer and more advanced topics, but it's possible to integrate more complex server monitoring with k8s - it already provides a lot of OS/application side monitoring that really makes it easier to setup observability - but now there's quite simple way to integrate custom node states into kubernetes allowing a quick glance way to check why a node is not accepting jobs, integrated with the system so you can actually trigger from a health-check that the node is in trouble and should not take jobs.

Re:Container technologies at Coinbase: Why Kubernetes is not... by ex_amazon_sde on Tuesday June 09, 2020 @12:57PM (#23468342)
This is how Amazon works internally, and by choice, because unnecessary complexity is the enemy.

> How do you do load balancing?

With dedicated load balancers. They are even cheaper than servers because they are optimized for doing one thing.

> How do you scale up and down?

With pretty trivial automation than trigger deployments when load is too high.

> How do you update your app without downtime?

(app?!) A package manager pulls updated packages, deploys them and restarts the services. The LB does the flipping.

> How do you roll back easily if something goes wrong?

The package manager does that quite easily

> How do you ensure all your servers are running the same version of dependencies? > How do you update those dependencies?

Package managers support versioning on dependencies.

> How do you replicate your environment if you want to add a new server to your cluster?

You install MyStuff version 1.2.3 and everything goes in.

> If your app has microservices how do services discover each other?

Thankfully Amazon uses services that are not micro. DNS does the trick.

> How do you update configuration?

It's in the packages.

> How do you automatically restart failed applications?

OSes do that since decades.

> How do you monitor if your applications are working?

LBs check the endpoints, monitoring tools do the rest.

Essentially you can build all of this with the technology that existed 15 years ago. It works reliably and it takes much less learning.

Re:Container technologies at Coinbase: Why Kubernetes is not... by rapsey on Tuesday June 09, 2020 @04:17AM (#23464772)
Tangentially lots of those features are quite nicely handled by Erlang.

Using plain old Linux and Erlang/Elixir as a backend you can get extremely far with scaling with very little overhead and issues.

It is unfortunate that so many ignore the benefits of using Erlang as a backend technology.

Re:Container technologies at Coinbase: Why Kubernetes is not... by lazzlazzlazz on Tuesday June 09, 2020 @05:16AM (#23465040)
This is a toxic trolling technique called "sealioning".

Thankfully, `jen20` was kind enough to take your questions in good faith and made a good demonstration of this confusion.

Re:Container technologies at Coinbase: Why Kubernetes is not... by OOPMan on Tuesday June 09, 2020 @08:23AM (#23465986)
I call bullshit on any 1-man team needing to worry much about this stuff.

Also, see jen20's response.

If your only tool is a hammer (called k8s) then I'm sure everything really does look like a nail...

Re:Container technologies at Coinbase: Why Kubernetes is not... by verroq on Monday June 08, 2020 @09:27PM (#23462688)
The easy answer is that you don’t need to run your service on distributed across 1000 VPS instances.

A handful of dedicated machines is enough. For example: stackoverflow.

None of these are difficult to answer. You can set up automated deployment/rollback however you want. You don’t care about the dependencies your code is compiled and linux has binary compat. You don’t need to split your app into 1000 unmanageable interdependent microservices. You have enough disk space on your dedicated machine or use NFS. You set up your systemd service file to auto restart your service. Etc etc.

When you have k8 as a hammer everything looks like a nail.

Re:Container technologies at Coinbase: Why Kubernetes is not... by wwright on Monday June 08, 2020 @08:22PM (#23462298)
“Plain old Linux” really isn’t an alternative to K8S though. You would need a load balancer, service discovery, a distributed scheduler, a configuration management system (K8S is a very strong alternative to building things around Ansible IMO). You can do all of those things without K8S, of course, but not with “plain old Linux” (what would that be anyway? GNU coreutils and the kernel? Vanilla Debian stable?)
Re:Container technologies at Coinbase: Why Kubernetes is not... by anang on Tuesday June 09, 2020 @04:53AM (#23464952)
Maybe I’m way off, but aren’t all of those things required for k8s? Ingress controllers, etcd cluster, terraform modules, storage configuration, etc...

I guess if you pay for a hosted service a lot of the control plane is taken care of.

I’ve used k8s in orgs where it’s a great fit and really fills a need, but it is considerably more complex than running a web service balanced across a couple of machines, and it definitely requires a lot more upfront complexity (as in, you have to solve problems before you have they are actually problems).

Re:Container technologies at Coinbase: Why Kubernetes is not... by folmar on Tuesday June 09, 2020 @06:37PM (#23471740)
At least in Azure Kubernetes ingress and etcd is yours, the other things are taken care of. And the terraform you get is quite nice.
Re:Container technologies at Coinbase: Why Kubernetes is not... by wwright on Wednesday June 10, 2020 @09:26PM (#23484294)
I was stating that plain Linux isn’t an alternative to K8S, not that one should always use Kubernetes ;)
Re:Container technologies at Coinbase: Why Kubernetes is not... by threeseed on Monday June 08, 2020 @07:51PM (#23462116)
> I don't see how k8s avoids the need to learn about cloud vendor specific tech e.g searching "aws RDS k8s"

Not sure what you mean here.

Kubernetes is designed to be cloud and vendor agnostic.

And RDS is a hosted database that you connect to from your application. Whether that applications runs standalone, in a container or VM is irrelevant.

Re:Container technologies at Coinbase: Why Kubernetes is not... by Aeolun on Tuesday June 09, 2020 @12:30AM (#23463664)
> Kubernetes is designed to be cloud and vendor agnostic.

But it’s not. Connecting to EKS is completely different from connecting to GCP. Setting up worker nodes is completely different too, oh and load balancers.

It’s only the last mile that’s similar.

Re:Container technologies at Coinbase: Why Kubernetes is not... by dtech on Tuesday June 09, 2020 @08:14AM (#23465914)
We've migrated from Heroku to EKS using Terraform to set it up. We done a small PoC for Azure, and within a day we had a small cluster and one of our apps running. The app terraform code required only 1 variable change.

Sure, it's far from drop & replace, but "completely different" is a huge misrepresentation in my experience. Running multi-cloud seemed quite doable.

Re:Container technologies at Coinbase: Why Kubernetes is not... by 15155 on Tuesday June 09, 2020 @05:55AM (#23465201)
Provisioning a new cluster on each of these platforms is tens of lines of Terraform.
Re:Container technologies at Coinbase: Why Kubernetes is not... by ponyous on Monday June 08, 2020 @06:17PM (#23461432)
I feel like what 98% companies need is really just barebones linux with some good documentation how to spawn new nodes.

To use k8s you need to know linux anyways, but to use linux you don’t need k8s knowledge. Most of things are as easy to setup with linux and the things where k8s really shines are not needed most often.

What I really wonder is where did you learn k8s, which parts did you learn the most? It seems huge and I would love to be in your position

Re:Container technologies at Coinbase: Why Kubernetes is not... by joana035 on Monday June 08, 2020 @06:39PM (#23461580)
K8s is a nice api on top of gnu/linux. Want a iptables rule? Write a yaml (network policy). Want a storage for you app? Write a yaml (persistent volume) etc etc.

For people who already know Linux, kubernetes comes naturally because it is pretty obvious.

But indeed, by experience, many companies can go to "unicorn scale" with two or three boxes.

Re:Container technologies at Coinbase: Why Kubernetes is not... by hwbehrens on Monday June 08, 2020 @07:21PM (#23461867)
Couldn't you get nearly the same behavior using some basic Ansible playbooks? My impression was that the killer feature of k8s was scaling, automatic failover, etc., although to be fair it's been several years since I last looked into it.
Re:Container technologies at Coinbase: Why Kubernetes is not... by antonvs on Monday June 08, 2020 @08:04PM (#23462202)
Think of kubernetes as a cluster operating system. Instead of dealing with vms, you deal with your applications directly, without worrying about where they're running. It gives you a unified view and ability to manage a distributed system at the level of the application components.

Ansible can't give you anything like that. Even if you use Ansible to automate something like network setup, the commands and modules you use will be different between e.g. cloud providers. Kubernetes give you a consistent abstraction layer that's almost unchanged across providers, with the exception of annotations that are needed in some cases for integration with certain provider services.

Re:Container technologies at Coinbase: Why Kubernetes is not... by joana035 on Monday June 08, 2020 @07:43PM (#23462042)
For me k8s kinda extends what you can do with ansible.

For example, if you use just kubelet (the main daemon) without the api, drop some static yaml files (ala unit files) under /etc/kubernetes it will be something like systemd is. No big deal so far, but using the kubernetes api (just another daemon) it allows you to run the all the things anywhere.

I mean, you terminate one computer, k8s will figure out that the program should be running and it will be started in another computer. (Including moving detaching/attaching the block device from/into computers, this kind of things)

There is no much secret.

For me it really feels like an (well designed/integrated) API on top of standard Linux technology (ipvs, netfilter, mount, process mgmt, virtual ip, etc) via yaml running your stuff in 1..N computers but you manage it as one big computer :)

EDIT: added more context within "()"

Re:Container technologies at Coinbase: Why Kubernetes is not... by treeman79 on Monday June 08, 2020 @10:36PM (#23463082)
I go in and out of development and ops and devops. 20 years.

To me as a developer heroku is the gold standard.

Docket-compose makes sense.

Kubernes and helm is a giant soul crushing wtf On getting anything done.

Now I’ll get it figure it out. Angular + exhaust+ typescript was a similar experience after I took a break from front end for a few years. A few months of pain, then it starts clicking.

but this just seems insane for a basic web app. So many different tools needed to get it going. Tutorials all have many steps that don’t apply, or use other odd pieces swapped in.

Re:Container technologies at Coinbase: Why Kubernetes is not... by p_l on Tuesday June 09, 2020 @04:49AM (#23464937)
Many tutorials are unfortunately bad, they actually got worse over time.

Oooold presentations (think 2016 and older) tended to talk more about basic building blocks and how they interacted, especially the design involving resources and their controllers working in a loop of "check requested state, check real state, do changes to implement requested state", and how those loops went up from single pods, through ReplicationControllers (now ReplicaSets), then Deployments, etc.

Re:Container technologies at Coinbase: Why Kubernetes is not... by treeman79 on Tuesday June 09, 2020 @10:26AM (#23466931)
This is the exact problem I ran into on rxjs. Every tutorial was badly out of date. Even ones written six months earlier.

You had to become a master of figuring out the direction of where community was going and stay on bleeding edge.

Some people found this fun. I have many times enjoyed this. When I want to get a boring feature built and hand off to the jr develops so I can spend some time with my kids. It’s frustrating

Re:Container technologies at Coinbase: Why Kubernetes is not... by p_l on Tuesday June 09, 2020 @06:26PM (#23471651)
The most annoying thing, to me, is that Kubernetes doesn't even move fast enough!

The old presentations? Ones that remember K8s 1.0? There's one major change (move from Replication Controller to Deployment+ReplicaSet) that doesn't invalidate ~90% of the material, because the core stuff is about how controllers work!

Yet it seems more and more common to me that people don't learn the core mechanism of kubernetes unless per chance they got there writing CRDs :|

Re:Container technologies at Coinbase: Why Kubernetes is not... by rumanator on Tuesday June 09, 2020 @01:58AM (#23464096)
> Couldn't you get nearly the same behavior using some basic Ansible playbooks?

No. For starters, Ansible playbooks don't allow you to dynamically deploy and redeploy a set of containers in the node that at a given moment happens to have more available computational resources such as bandwidth, nor do teu respawn a container that just happened to crash.

Arguably Ansible only implementos a single feature of Kubernetes: deploy an application. Even so, while with Ansible you need to know and check all details about the underlying platform, with Kubernetes in essence you only need to say "please run x instantes of these containers".

Re:Container technologies at Coinbase: Why Kubernetes is not... by lmm on Tuesday June 09, 2020 @05:03AM (#23464987)
Ansible gets you like 80% of the value of Kubernetes, yes. But you have to allocate applications to hosts manually, your configuration is less declarative, and what do you gain?
Re:Container technologies at Coinbase: Why Kubernetes is not... by neop1x on Wednesday June 10, 2020 @08:42AM (#23476414)
What about service discovery? What if you need to put power your node down for maintenance? What if your app goes crazy and consumes so much memory it OOMs some other services? Reliable, multi-service deployments ARE HARD and always be regardless what tech you use to achive it. Of course you can use Ansible and do it old-school way and wast lots of underutilised VMs and custom idempotent scripts. But K8S solves many of challenges in a standardised, data-driven way. It has steep learning curve but once learned, all resources/limits are properly set, logging in place, etc, it works nicely.
Re:Container technologies at Coinbase: Why Kubernetes is not... by lifeisstillgood on Monday June 08, 2020 @06:09PM (#23461360)
Firstly tell me more about your 1-person full-stack venture, but second how comes you, with barely any time for sitting down can use k8s happily but it falls over for others. I am struggling to see truth amount the comments here :-(
Re:Container technologies at Coinbase: Why Kubernetes is not... by dashwav on Monday June 08, 2020 @06:23PM (#23461475)
TBF with a completely greenfield project and managed K8s (GKE or EKS) you can absolutely get a pretty well set up infra very quickly if you are willing to learn how to do so.

I often get the feeling a lot of the negativity comes (rightfully so) from trying to replicate a current existing project into kubernetes. This is true of almost any paradigm - try replicating a Java EE monolith into Erlang and you are going to have a lot of problems. The big thing to note is that starting a project on Erlang very well might solve the problems that a Java EE project ran into, but that is because they were able to solve them at the ground floor, and just popping a Java EE project with all of it's architecture into an Erlang project will probably end up in a worse spot.

I think that this is what often happens with k8s as well - if you or your company have a currently working implementation that isn't on k8s, of course you won't be able to just easily plop it into a k8s cluster and everything be all well and good, but I think the problem is that people are equating that issue with k8s itself, which is a completely different paradigm.

Re:Container technologies at Coinbase: Why Kubernetes is not... by solidasparagus on Monday June 08, 2020 @08:52PM (#23462474)
> managed K8s (GKE or EKS) you can absolutely get a pretty well set up infra very quickly

And then tear your hair out when something doesn't work for some reason and root causing it requires learning a stupid number of layers. k8s is easy until it goes wrong.

Re:Container technologies at Coinbase: Why Kubernetes is not... by harpratap on Monday June 08, 2020 @11:43PM (#23463448)
Isn't this the same for every software? How is debugging issues with Linux, NGINX, any complex framework any easier?
Re:Container technologies at Coinbase: Why Kubernetes is not... by Aeolun on Tuesday June 09, 2020 @12:42AM (#23463717)
Well, for one thing, all logs are in /var/log.

If it doesn’t fail just right in kubernetes there might be no logs at all.

I’m thinking on particular about trying to mount filesystems into pods.

Re:Container technologies at Coinbase: Why Kubernetes is not... by lenkite on Tuesday June 09, 2020 @02:01AM (#23464117)
Debugging k8s issues is like debugging a vast distributed monolith with a vague guesses on where the problem occurred.
Re:Container technologies at Coinbase: Why Kubernetes is not... by snuxoll on Monday June 08, 2020 @07:13PM (#23461815)
Not the GP, but I honestly couldn't tell you. A lot probably comes down to tooling, the applications you are deploying, security requirements, etc., as well as how familiar you are with k8s itself.

I migrated PCGamingWiki from running on some Hetzner boxes to DigitalOcean Kubernetes in a few days of work creating Dockerfiles and k8s manifests. I run a Kubernetes cluster at work fairly hands-free that hosts applications critical to our billing operations, and developers on the team deploy new applications with little or no support. Any of the issues I've hit are an artifact of migrating legacy applications not designed to run in more-or-less stateless environments, which is why the PCGW Community site still runs on its own server (Invision Community sucks).

I really don't see all the issues people have that aren't due to a mismatch of application design vs target environment (and no, it's not monolith vs microservice - monoliths run just fine on k8s; but you should be designing your application with a 12-factor environment in mind) or a misguided notion that you will be drowning in YAML hell (it's real, but you can manage it - and it's directly related to the complexity of the services you are deploying).

Re:Container technologies at Coinbase: Why Kubernetes is not... by anticristi on Tuesday June 09, 2020 @03:39AM (#23464600)
I can totally agree with this. Most of my customers that I see struggling with K8s are those that haven't internalized 12-factor principles: not just heard, read or understood, but really internalized. It is unfortunate that K8s talks / blob posts / articles do not focus enough on this pre-requisite.
Re:Container technologies at Coinbase: Why Kubernetes is not... by ramraj07 on Monday June 08, 2020 @08:53PM (#23462489)
Seems like you are a thoughtful engineer who can also make sure you don't make any fundamental design flaws while building these systems well. Whenever I have seen kubernetes fail it's often also because the engineer(s) who built it were not thoughtful at all and often didn't fully understand what they were doing. Perhaps k8s's failing is it makes people who dont know enough think that they do.
Re:Container technologies at Coinbase: Why Kubernetes is not... by snuxoll on Monday June 08, 2020 @09:43PM (#23462780)
I mean, I’m far from perfect - the trick has always been to KISS. I don’t use istio, it’s absolute overkill for my needs. I use nginx-ingress because it fits the bill, I know nginx as do enough other people that they could exec into a pod to debug it. I don’t run stateful applications that aren’t prepared to have servers randomly vanishing because it take a LOT of work to get these running in-cluster. I don’t use public helm charts because they often suck and making your own container is something you can do quickly if you were able to deploy the software on a traditional server. Every choice I make is done with the day 2 operations in mind, not what is hot, what gets initially deployed fastest - but what makes it so I can touch the thing as frequently as possible.

PCGW is a great example - installing a new Mediawiki extension, changing a config file, upgrading to a newer MW release is just updating a file or a git submodule and committing. I don’t get paid thousands a month to manage the site for the owner, so I make my time spent as efficient as can be done.

Re:Container technologies at Coinbase: Why Kubernetes is not... by andrenth on Monday June 08, 2020 @09:44PM (#23462788)
I think this is a big failing of the DevOps movement as a whole (at least what DevOps became in practice — devs doing ops) which results in things like passwordless mongodb exposed to the internet...
Re:Container technologies at Coinbase: Why Kubernetes is not... by lsofzz on Tuesday June 09, 2020 @06:41AM (#23465402)
> I think this is a big failing of the DevOps movement as a whole (at least what DevOps became in practice — devs doing ops) which results in things like passwordless mongodb exposed to the internet...

Hardly. If anything at all, it tells about the _team_ and/or the culture of the organisation. In any DevOps/SRE/Opsec culture worth the salt, an immediate blameless postmortem analysis would be performed to help with premortem analysis in future.

DevOps is not about exposing unsecured endpoints. You've got it all wrong son.

Re:Container technologies at Coinbase: Why Kubernetes is not... by andrenth on Tuesday June 09, 2020 @08:29AM (#23466023)
I'm not your son, nor am I talking about what DevOps "is about", but about what is became in practice, which you would have understood hadn't you rushed to reply in the most condescending tone you managed to invoke.
Re:Container technologies at Coinbase: Why Kubernetes is not... by lsofzz on Wednesday June 10, 2020 @12:14AM (#23473855)
> I'm not your son, nor am I talking about what DevOps "is about", but about what is became in practice, which you would have understood hadn't you rushed to reply in the most condescending tone you managed to invoke.

Fair enough. I am letting you know though the part where you got mixed up - that is not because _What DevOps has become in practice_. That is precisely because of failings and shortcomings in team culture and/or the organisation that practice DevOps.

Re:Container technologies at Coinbase: Why Kubernetes is not... by antonvs on Tuesday June 09, 2020 @06:06AM (#23465250)
This is pretty typical when a product is still climbing the adoption curve. I've helped small companies set up (managed) k8s clusters and migrate their apps to them, and when you know what you're doing, it's a super smooth experience that's basically all upside.

But, if you're approaching it for the first time with no assistance, there are lots of things that can trip you up, and lots to learn. That's not a reflection on k8s, it's just the nature of the large set of problems it's solving.

K8s is succeeding because it's very well designed, has a large and diverse ecosystem, and solves set of important problems that very few other tools even try to tackle. Apache Mesos perhaps comes closest, but it's not quite as pragmatic, and its adoption level reflects that.

Also, because of k8s' scope, many people may not fully appreciate the range of problems it's solving, seeing it through the lens of their own background and focus.

Re:Container technologies at Coinbase: Why Kubernetes is not... by lmm on Tuesday June 09, 2020 @05:11AM (#23465024)
People who don't like - or don't "get" - declarative systems tend to spend an inordinate amount of time and effort fighting them. I've seen the same thing with a delcarative build system (maven), or with adopting an ORM - if you're willing to work with the tool then it will save you a lot of effort, but if you're determined to do things your own way then you can make it almost arbitrarily difficult.
Re:Container technologies at Coinbase: Why Kubernetes is not... by antonvs on Tuesday June 09, 2020 @06:11AM (#23465270)
> if you're determined to do things your own way then you can make it almost arbitrarily difficult.

This is true of software development in general, if not life itself!

But you're right that declarative systems amplify this issue.

Re:Container technologies at Coinbase: Why Kubernetes is not... by banifo on Tuesday June 09, 2020 @03:20AM (#23464493)
Might also be the amount of experience a person has.

I have done Softwaredevelopment for ~15 years, swiched now to infrastructure and build a gke cluster. It was awesome, very logical, nice and easy to use.

Now i read stories from coinbase and don't get it.

Re:Container technologies at Coinbase: Why Kubernetes is not... by peterwwillis on Monday June 08, 2020 @07:35PM (#23461992)
> What is the alternative to k8s that does not need people to have any technical knowledge?

Paying for a managed provider. Heroku, Elastic Beanstalk, GAE, GCP, Fargate, etc. You push some buttons, they manage your cluster/services.

People still think they can get a free lunch by downloading some free software. If that were so, Windows and Mac would be dead and Linux would be the only desktop OS. But good news: I hear 2030 will be the year of the Linux Desktop!

Re:Container technologies at Coinbase: Why Kubernetes is not... by hardwaresofton on Tuesday June 09, 2020 @05:03AM (#23464986)
Check out Dokku[0]

[0]: https://github.com/dokku/dokku

Re:Container technologies at Coinbase: Why Kubernetes is not... by OOPMan on Tuesday June 09, 2020 @08:16AM (#23465937)
Couldn't have done it without k8s?

Ahahahahaha, kids say the darndest things these days...

Re:Container technologies at Coinbase: Why Kubernetes is not... by mmgutz on Monday June 08, 2020 @06:46PM (#23461629)
I'm in the same boat opting for docker-compose instead. docker-compose is much simpler to manage. Obviously it doesn't have feature parity with k8s but docker-compose does the basics well.

An inexpensive VPS runs compose well with more resources at a lower cost than the managed costs of k8s.

Re:Container technologies at Coinbase: Why Kubernetes is not... by threeseed on Monday June 08, 2020 @07:54PM (#23462136)
I don't understand this comment at all.

Kubernetes is designed for a cluster of nodes not a single one.

Of course a single VPS is lower cost and easier to use but what happens if you want a second or third. Or any form of redundancy.

Re:Container technologies at Coinbase: Why Kubernetes is not... by imtringued on Tuesday June 09, 2020 @04:09AM (#23464729)
You just run scp with the compose file and run docker compose down; docker compose up

Bonus points if you just mount the compose file on an NFS share.

I've wasted enough man months on kubernetes that unless you tell me to manage 1000 nodes this approach will never cost me more time than the time I spent using and learning kubernetes.

Re:Container technologies at Coinbase: Why Kubernetes is not... by folmar on Tuesday June 09, 2020 @06:39PM (#23471752)
A lot of people use it for deployment standard and don't care about multinode.
Re:Container technologies at Coinbase: Why Kubernetes is not... by j4ah4n on Monday June 08, 2020 @09:34PM (#23462732)
I presume they are using docker swarm in this instance.
Re:Container technologies at Coinbase: Why Kubernetes is not... by temptemptemp111 on Tuesday June 09, 2020 @04:44AM (#23464900)
Agreed. Good support for compose currently, and swarm is usually overkill. With a bit more elegant HA functionality, docker-compose could be the go-to for many more. The comment below claiming he doesn't understand your comment reminds me of all of those who will say "well its not FOR production" - seems more like superstition than science.