14 ms·
Fly Kubernetes
- verdverm 3y agoIf they are reluctant and only do it because they have to, are they really the right vendor for managed k8s? What about them makes for a good trade-off when considering the many other vendors?
- szundi 3y agoIf their reluctance were based on valid reasons that they handled in a unique way - might be good. In theory.
- verdverm 3y agok8s has become a standard api and platform for running apps, having a * on it makes the implementation an outlier from the standard, not normally considered a good thing because you have to be aware of the nuanced differences.
- paxys 3y agoMaybe a got fit for someone who is reluctant to use Kubernetes but has to for whatever reason.
- nailer 3y agoIf someone isn't a cloud provider they should be reluctant to use Kubernetes.
- paxys 3y agoPlenty of companies/teams qualify as "cloud providers" even though all the usage is internal.
- verdverm 3y agoAren't most k8s users not cloud providers? It's more about good abstractions and APIs for running applications in the cloud. Cloud providers are the one's offering the APIs and abstractions we use, and increasingly putting k8s abst/apis at the forefront, because that is where industry has moved to
- nailer 3y ago> Aren't most k8s users not cloud providers? Yes. The point still stands.
- verdverm 3y agoPeople and companies use it because it makes this easier in several areas, it's industry standard at this point. Can you explain why we should be reluctant to use k8s?
- nailer 3y ago> People and companies use it because it makes this easier in several areas Compute on demand is significantly more complex using k8s than what most companies already pay for from their own cloud provider, AWS is the industry standard for this purpose, followed by Azure, then TF, then Pulumi maybe. k8s is a meme for resume-driven development.
- verdverm 3y agoOk, you're obviously just a hater and aren't worth taking seriously
- deleted 3y ago[deleted]
- tptacek 3y agoWe're not a K8s vendor. We're a lower-level platform than that. If all you care about is K8s, and no part of the rest of our platform is interesting to you --- the global distribution and Anycast, the fly-proxy features, the Machines API --- we're not a natural fit for what you're doing. We were surprised at how FKS turned out, which is part of why we decided to launch it as a feature and all of why we wrote it up this way. That's all.
- verdverm 3y ago> We're not a K8s vendor It might now be more accurate to say "You were not a k8s vendor", but now you are based on > If K8s is important for your project, and that’s all that’s been holding you back from trying out Fly.io, we’ve spent the past several months building something for you. If it's fundamentally different, maybe you shouldn't call it Kubernetes, perhaps a Kubernetes API compatible alternative? fwiw/context, I use GKE and also many of the low-level services on GCP Is Fly supposed to be simpler for the average developer?
- kasey_junk 3y agoAre any of the cloud provided managed K8s offerings just K8s under the covers? I’ve always assumed all of them shim the K8s api onto other more bespoke orchestration systems.
- verdverm 3y agoMost are pretty much actually k8s, though they tend to have different ways of handling the masters, my understanding is that it's the same k8s binaries and code What I've seen is the k8s APIs working their way into other systems like cloud functions and servers, so you can use the same Yaml across vendors and products. This is further solidifying k8s APIs as an industry standard Searching "managed kubernetes providers" is a good starting point to learn about the various offerings
- kasey_junk 3y ago
- frenchman99 3y agoProbably good for people already used to fly or interested in fly for other reasons, that could also use k8s ? Sometimes you just want to run k8s without thinking too much about it, without having all the requirements that gcp have answers to.
- grossvogel 3y agoI'm excited about this as a way to configure my Fly.io apps in a more declarative way. One of my biggest gripes about Fly.io is that there's a lightly documented bespoke config format to learn (fly.toml), and at the same time there's a ton of stuff you can't even do with that config file. I love Kubernetes because the .yaml gives you have the entire story, but I'd _really_ love to get that experience w/o having to run Kubernetes. (Even in most managed k8s setups, I've found the need to run lots of non-managed things inside the cluster to make it user-friendly.)
- edude03 3y agoI'm confused about what this is actually offering (also very tired due to some flight problems; anyway) To me, I'd imagine kubernetes on fly as running kind (kubernetes in docker) with fly converting the docker images to firecracker images OR "normal" kubernetes api server running on one machine then using CAPI/or a homegrown thing for spinning up additional nodes as needed. So, what's the deal here? Why k3s + a virtual kublet?
- deleted 3y ago[deleted]
- tptacek 3y agoYou can certainly boot up your own K8s cluster, any way you'd like to, just by enlisting a bunch of Fly Machines and configuring them yourself. A Fly Machine is just a VM, and you have root in the VM. You can set up systemd, you can set up Docker, you can run kubelets on all your Machines. The thought here is: Fly.io already does a lot of the things any K8s distribution would do. If you were to boot up a complete K8s distribution on your own Fly Machines, running oblivious to the fact that they were on Fly.io, you'd be duplicating some of the work we'd already done (that's fine, maybe you like your way better, but still, bear with me). So, rather than setting up a "vanilla" K8s that works the same way it would if you were on, like, Hetzner or whatever, you can instead boot up a drastically stripped down K8s (based on K3s and Virtual Kubelet) that defers some of what K8s does to our own APIs. Instead of a cluster of scheduling servers synchronized with Raft, you just run a single SQLite database. Instead of bin-packing VMs with Docker and a kubelet, you just run everything as an independent Fly Machine. We took the time to write about this because it was interesting to us (I think we expected a K8s to be more annoying for us to roll, and when it was easier we got a lot more interested). There are probably a variety of reasons to consider alternative formulations of K8s!
- candiddevmike 3y agoDid you consider using/adopting the seemingly defunct nomad virtual kubelet?
- 3y ago
- asim 3y agoAnd fly becomes the standard cloud provider like everyone else. I think this transition is only natural. It's hard to be a big business without catering to the needs of larger companies and that is the operation of many services, not individual apps.
- therein 3y agoI used Fly for some projects, I really like it. But once again, for many of my projects, I still need my outbound IPs to resolve to a specific country. I can't have them all resolve to Chicago, US in undeterministic ways. I would be willing to pay an additional cost for this but even with reserved IPs, I am given IPs that are labelled as Chicago, US IPs by GeoIP providers even for non US regions.
- zifnab06 3y agofwiw - our network folks _should_ have fixed this a few weeks ago. Some of the outbound IPs were incorrectly tagged in some of the geoip databases as being in the US when they were not.
- therein 3y agoI remember asking about this about half a year ago. Back then I was told since Fly can route these IPs to wherever they want in their infrastructure by making simple configuration changes, the line is blurred anyway but GeoIP providers just take the shortcut and resolve to where the company is registered. I'll try again if the situation is different now.
- zifnab06 3y agoInbound IPs use anycast - the IP we give you routes to the nearest fly region and then hits a wireguard tunnel to get to the correct region. Outbound IPs are tied to the individual host your machine is running on (which is located in a single region). These are tied to a single region, and in some cases, these were resolving to the wrong region in a few of the GeoIP databases. We hopefully fixed this part.
- 0xbadcafebee 3y agoI like the discussion on scheduling. One of the things I've thought recently is that, since there's no one model of how an app or system should work, nor one network architecture, there shouldn't be one scheduler. Instead, I think the system components should expose themselves as independent entities, and grant other system components the ability to use them under criteria. With this model, any software which can use the system components' interfaces can request resources and use them, in whatever pattern they decide to. But this requires a universal interface for each kind of component, loosely coupled. Each component then needs to have networking, logging, metrics, credentials, authn+z, configuration. And there needs to be a method by which users can configure all this & start/stop it. Basically it's a distributed OS. We need to make a standard for distributed OS components using a loosely coupled interface and all the attributes needed. So, not just a standard for logging, auth, creds, etc, but also a standard for networked storage objects that have all those other attributes. When all that's done, you could make an app on Fly.io, and then from GCP you could attach to your Fly.io app's storage. Or from Fly.io, send logs to Azure Monitor Logs. As long as it's a standard distributed OS component, you just attach to it and use it, and it'll verify you over the standard auth, etc. Not over the "Fly.io integration API for Log Export", but over the "Distributed OS Logging Standard" protocol. We've got to get away from these one-off REST APIs and get back to real standards. I know corporations hate standards and love to make their own little one-offs, but it's really holding back technological progress.
- verdverm 3y agoYou're basically describing Kubernetes and why it has become so popular
- dilyevsky 3y agoEvery time the topic of k8s is being discussed on hn, without fail, someone will chime in saying basically "i hate k8s - it would be better if someone did <proceeds to describe all the things that k8s already does>"
- 0xbadcafebee 3y agoK8s is the opposite. It's proprietary, insular, not compatible with anything else, tightly coupled, not layered, not backwards compatible, etc. It has network services, logging, auth, etc, but so does literally every other system in the world, that doesn't make them all identical. K8s is popular because it's free, has a lot of bells and whistles, and was made by Google. Otherwise nobody would use it. It's basically a larger, slightly less crappy Jenkins.
- benpacker 3y agoAm I understanding correctly that because they map a “Pod” to a “Fly Machine”, there’s no intermediate “Node” concept? If so, this is very attractive. When using GKS, we had to do a lot of work to get our Node utilization (the percent of resources we had reserve on a VM actually occupied by pods) to be higher than 50%. Curios what happens when you run “kubectl get nodes” - does it lie to you, or call each region one Node?
- verdverm 3y ago> we had to do a lot of work to get our Node utilization ... over 50% Same, a while back you had to install cluster-autoscaler and set it to aggressive mode. GKE has this option now on setup, though I think anyone who's had to do this stuff knows that just using a cluster-autoscaler is never enough. I don't see this being different for any cluster and is more a consequence of your workloads and how they are partitioned (if not partitioning, you'll have real trouble getting high utilization)
- robertlagrant 3y agoI wonder how it copes with things like anti-affinity rules, where you don't want two things running on the same physical / virtual server for resilience reasons.
- kuhsaft 3y agoYou wouldn’t use affinity rules anymore. The pods are scheduled on a single virtual-kubelet node, so if you use anti-affinity scheduling would fail.
- AaronFriel 3y agoIf there were a virtual kubelet per unit of granularity (datacenter, in their case?) then you would be able to use affinity rules just fine.
- kuhsaft 3y ago
- motoboi 3y agoThere is a very high price to pay when going with your own scheduling solution: you have to compete with the resources google and others are throwing at the problem. Also, there is the market for talent, which is non-existent for fly.io technology if it's not open source (I see what you did here, Google): you'll have to teach people how your solution works internally and congratulations, now you have a global pool of 20 (maybe 100) people that can improved it (if you have really deep pockets, maybe you can have 5 Phd). Damn, universities right now maybe have classes about Kubernetes for undergrad students. Will they teach your internal solution? So, if a big part of your problem is already solved by a gigantic corporation investing millions to create a pool of talented people, you better take use of that! Nice move, fly.io!
- nojvek 3y agoWhat if it’s really not that complicated, and by adding more people you make it more complex. So complex that you need even more people to maintain that complexity? I love fly.io for rethinking some of the problems.
- hitpointdrew 3y ago> To keep things simple, we used Nomad, and instead of K8s CNIs, we built our own Rust-based TLS-terminating Anycast proxy (and designed a WireGuard/IPv6-based private network system based on eBPF). That is quite the opposite of “simple”. That is in fact, overly complex and engineered.
- tptacek 3y agoWhat part of it is overly complex and engineered? Maybe you're right, but it's hard to respond without a better idea of what you think our problem domain was.
- candiddevmike 3y agoReading the features of your CNI, I don't see why Calico wouldn't have worked for your needs, what made you want to DIY?
- tptacek 3y agoCan you say more about what you think our needs were? I'm not trying to be evasive, I just want to spare you a 9 paragraph response that doesn't address anything you were thinking.
- hitpointdrew 3y agoTo be fair I don't have insights into your projects. But generally speaking in my experience, anytime there is already some standard most people have adopted, rolling your own solution is usually the wrong solution, and typically over engineered.
- deleted 3y ago[deleted]
- xwowsersx 3y agoHow do you know their own Anycast proxy isn't simpler than K8s CNIs? Building something yourself isn't necessarily overly complex or over engineered. Sometimes building a simple thing yourself is the way to simplicity when the only available options already built are very heavy/overkill or complex
- znpy 3y ago> But, come on: you never took us too seriously about K8s, right? What a strange way to admit they were wrong.
- tptacek 3y agoIs that what we did here? You get that this is just a `flyctl` feature and some Dockerfiles, right? You could have built FKS yourself by forking `flyctl`.
- kfk 3y agoMaybe you were not wrong on technical merits, but your move proves you underestimated the value of the Kubernetes ecosystem of lots and lots of standards and trained talent. It’s like building a fancy CMS today with a fancy API, but then make it Wordpress compatible when you realize the value of WP is not just in the tech, but also in the ecosystem.
- deleted 3y ago[deleted]
- tootie 3y agoThis is impressive, but also seems to fly in the face of their raison d'etre. I don't even bother with k8s on AWS because it's too complex for even a mid-size operation. Isn't the point of PaaS to obscure complexity?
- swozey 3y agoMost of these PaaS are just abstracting their k8s away from you in the end anyway. But they'd never tell you that, they need to be able to switch back to Mesos or whatever the market heads to in 10 years without scaring customers.
- tptacek 3y agoWe're not replacing Fly.io and the Fly Machines API and the Fly Launch stuff in `flyctl` with FKS. FKS is just there for people who want a K8s interface. If you're not interested in K8s at all, you shouldn't touch FKS.
- netshade 3y agoI am a current Fly customer (personal and work), and have been happy with the service. Will likely be trying this out. That said, the marketing tone of this final part of the blog: > More to come! We’re itching to see just how many different ways this bet might pay off. Or: we’ll perish in flames! Either way, it’ll be fun to watch. is like nails on the chalkboard for me.
- tick_tock_tick 3y agoWhy? If you're using something like Fly you should 100% always have a fallback plan ready. You are gambling using smaller players to get cheaper services or some other benefit the big players don't offer in exchange for the very real possibility of a random day they announce 30 days til they permanently shutdown with zero migration path. I don't think it's in poor taste to acknowledge exactly what everyone should understand and be prepared for.
- netshade 3y agoYou can communicate those ideas specifically without hiding it beneath the veneer of relatability. The entire post started with this bit: > But, come on: you never took us too seriously about K8s, right? K8s is hard for us to use, but that doesn’t mean it’s not a great fit for what you’re building. We’ve been clear about that all along, right? Sure we have! which already starts the post in a bad space for the reader. I have cognitive whiplash from what is intended. "We DON'T like Kubernets UNTIL WE DO but then WE MIGHT NOT IN THE FUTURE". Clear meaning is far more appreciated.
- tptacek 3y agoWe're not trying to sell you so much as we are trying to put you in the headspace we are in building this stuff. Your summary (we DON'T until we DO but MAYBE NOT) does feel pretty true to life!
- lkjadflkj4 3y agoSome people have a cheeky sense of humor. Counterpoint: I'm ok with it.
- Dowwie 3y agoWouldn't it have cost less to enhance the Nomad scheduler rather than move to, and enhance, Kubernetes? This aside, Fly is in a position to build its own alternative to K8s and Nomad from scratch, so maybe it will?
- imjonse 3y agoThey have for their infrastructure, as I understood from this and previous blogs. This is for their user-facing offering. It makes sense if people are using other cloud K8S solutions and want to migrate without rethinking too much of their existing architecture.
- tptacek 3y agoWe absolutely have not moved to K8s. We've just added a feature that lets you run K8s, in a particularly simple configuration, if K8s is what you want. If you weren't already interested in using K8s, you shouldn't touch FKS. The ordinary way someone would boot up an app on Fly.io is to visit a directory in their filesystem with a Rails or Django or Express app or something, or a Dockerfile, and just type `flyctl launch`. No K8s will be involved in any way. You have to go out of your way to get K8s on Fly.io. :)
- corobo 3y agoIs this still a limitation for Fly k8s? > A Fly Volume is a slice of an NVMe drive on the physical server your Fly App runs on. It’s tied to that hardware. Does the k8s have any kind of storage provisioning that allows pods with persistent storage (e.g. databases) to just do their thing without me worrying about it or do I still need to handle disks potentially vanishing? I think this is the only hold-up that stops me actually using Fly. I don't know what happens if my machine crashes and is brought back on different hardware. Presumably the data is just not there anymore. Is everyone else using an off-site DB like Planetscale? Or just hoping it's an issue that never comes up, w/ backups just in case? Or maybe setting up full-scale DB clusters on Fly so it's less of a potential issue? Or 'other'?
- tptacek 3y agoNot speaking for the FKS case, but in general for the platform: when you associate an app with a volume, your app is anchored to the hardware the volume is on (people used to use tiny volumes as a way to express hard-locked region affinity when we were still using Nomad). So if your Fly Machine crashes, it's going to come back on the same physical as the volume lives on. We back up volumes to off-net block storage, and, under the hood, we can seamlessly migrate a volume to another physical (the way we do it is interesting, and we should write it up, but it's still also an important part of our work sample hiring process, which is why we haven't). So your app could move from one physical to another; the data would come with it. On the other hand: Fly Volumes are attached storage. They're not a SAN system like EBS, they're not backed onto a 50-9s storage engine like S3. If a physical server throws a rod, you can lose data. This is why, for instance, if you boot up a Fly Postgres cluster here and ask us to do it with only one instance, we'll print a big red warning. (When you run a multi-node Postgres cluster, or use LiteFS Cloud with SQLite, you'd doing at the application layer what a more reliable storage layer would do at the block layer).
- deleted 3y ago[deleted]
- imjonse 3y agoApples to oranges, but it has a similar vibe to when Deno added npm compat eventually.
- siliconc0w 3y agoAlways look forward to reading the fly.io blog write-ups. As much as people hate it, K8s has become the defacto operating system for the cloud so it makes sense to support it.
- joshuamcginnis 3y agoWhy should one use kubernetes? Or rather, at what point of an apps growth cycle does k8s become appropriate?
- deleted 3y ago[deleted]
- erulabs 3y agoKubernetes is not really meant to assist apps themselves. It's a tool for organizations with multiple independent development teams which helps define a single source of truth for whats running where. Kubernetes is a great fit for even extremely simple applications - assuming you have dozens to keep track of and dozens of developers who want to make changes to them.
- jen20 3y ago> Or rather, at what point of an apps growth cycle does k8s become appropriate? The real problem is that the point it becomes attractive to have something like Kubernetes is not too far from the point where Kubernetes becomes an overly-complex mess of disparate parts.
- oceanplexian 3y agoKubernetes is popular because it solves problems at a certain scale. It's not for super small environments because you need a number of infrastructure engineers to manage it. But if you have a few hundred or thousand employees and don't want to write your own orchestration, it makes sense. That said, it's a questionable design choice when you get to a hyperscale environment, since all the primitives are extremely opinionated and have design and scalability issues with service discovery, networking, and so on. All the controllers had to be rewritten, we had to roll our own deployment system, our own service discovery system, our own load balancing, and so on. But if you reach this level, you're probably making a lot of money and can figure out how to solve your problems.
- politelemon 3y agoI'd say, not in an app's growth cycle, but when an organization wants to manage and scale platforms for itself, on which it runs apps, is when k8s becomes appropriate. In other words, k8s is a platform builder.
- rileymichael 3y agoHaving little experience with k3s, how big of a workload (“nodes” aka virtual kubelets, pods, crds, etc) can you have before saturating the non-HA control plane becomes a concern?
- syrusakbary 3y agoThis is one of the biggest footguns of a tech company I've seen in the last decade. Time will tell if embracing the complexity of Kubernetes was a good play for them or not. But, in all honesty, I'm pretty sad to see this happening, although I'm sure they had their reasons.
- vidarh 3y agoI'm guessing this is one of the areas where sticking to a vision loses out over winning the most business in the short term.
- whalesalad 3y agoKubernetes is really epic and powerful if you actually take the time to understand it from first principles. Unfortunately people don't do this, and individuals without good networking/devops experience roll something half-baked out with a terrible deployment process, a mess of helm charts, etc... and it ends up being hated by everyone. At FarmLogs (yc 12) we had a pretty righteous gitops (homegrown) kube platform running dozens of microservices. We would not have been able to move as quickly as we did and roll out so many different features without it. This was back when people had just started to adopt it. Mesos was still a contender (lmao). We were polyglot too - python/clojure mixture. Heck, we even ran an ancient climate model called APSIM that was built in c#/mono, required all kinds of ancient fortran dependencies etc and it worked like a charm on kube thanks to containers. We had dedicated internal load balancers behind our VPN for raw access to services and endpoints, like "microservice.internal.farmlogs.com" (this was before istio, fabric networks, all the incredible progress that exists now) I recall Brendan Burns asking me to write up a blog post for the Kube blog about our success story, but unfortunately was so saddled with product dev work and managing the team that I never found time for it. I will absolutely adopt K8s again one day (very soon) but you need to know how to harness its capabilities and deploy it correctly. Build your own Heroku that fits your business. Use the Kube API directly. It's really not hard. It gets hard due to all the crap in the ecosystem (helm, yaml files). Hitting API direct means no yaml =) I am stoked to see Fly offering this.
- ekidd 3y ago
- nathancahill 3y agoMan, I just wish they'd work on stability. Fly.io is an amazing offering. But it's so buggy, it's almost more headache than it's worth trying to build PaaS-flavored software on it. Even the Fly docs are "buggy" since they mostly transitioned to v2 Machines but the docs are still a mix of Nomad and Machines. There's so much power on the platform with Flycast, LiteFS and other clever ways to work with containers. If it was 90% stable I'd consider it a huge win.
- rozenmd 3y agoI agree - I find if you pick the "mainstream" regions like IAD you get close to 100% uptime, like what you see from my 3rd-party status page here: https://flyio.onlineornot.com/ https://flyio.onlineornot.com/ Once you start deploying in SIN/CDG etc you start to get really weird instability (and this is on v2 machines).
- JCharante 3y agoOne of fly's main features is global distribution so it's kinda silly if you have to avoid SIN and CDG
- loloquwowndueo 3y agoYou can use hkg and ams instead :)
- ricketycricket 3y agoI haven't been able to bring up a clustered Elixir server in hkg without experiencing netsplits every 5-10 minutes. ewr, ord, and cdg have been totally reliable.
- deleted 3y ago[deleted]
- 4ggr0 3y agoi definitely want to try this! never really worked with kubernetes, because it always seemed too complicated, for what i needed. after using fly.io for my first real web project in a while, they do seem to provide exactly what i want from a "hoster".
- alpb 3y agoI kind of miss the point of this. So if I'm reading this right, fly.io practically only exposes the Pods API, but Kubernetes is really much more than that. I'm not very familiar with any serious company that directly uses Pods API to launch containers, so if their reimplementation of Pods API is just a shim, and they're not going to be able to implement ever-growing set of features in Kubernetes Pod lifecycle/configuration (starting from /logs, /exec, /proxy...) why even bother branding it Kubernetes? Instead they could do what Google does with Cloud Run (https://cloud.run/ https://cloud.run/) which Fly.io is already doing? I don't know why would anyone would be like "here's a container execution platform, let me go ahead and use their fake Pods API instead of their official API".
- tptacek 3y agoThis is a good comment. More like this! Right now, the immediate things you'd get out of using FKS are: * The declarative K8s style of defining an app deployment, and some of the K8s mechanics for reconciling that declaration to what's actually running. We did most of this stuff before when we were backed on Nomad, but less of it now with Fly Machines. If you missed having a centralized orchestrator, here's one. * Some compatibility with K8s tooling (we spin up a cluster, spit out a kubeconfig file, and you can just go to town with kubectl or whatever). This is absolutely not going to let you do everything you can possibly do with K8s! Maybe we'll beef it up over time. Maybe not many people will use it, because people who want K8s want the entire K8s Cinematic Universe, and we'll keep it simple. Mostly: we wrote about it because it was interesting, is all that's happening here. I think you asked a super good question, and "I don't know, you might be right" is our genuine answer. Are there big things this is missing for you? (Especially if they're low-hanging fruit). I can (sort of) predict how likely we are to do them near term.
- kuhsaft 3y agoI think there’s potential here. It is Kubernetes since they are running k3s as the control-plane. It’s not just an implementation of the Pod API, it’s an implementation of kubelet which handles logs/exec/etc APIs. The rest of the Kubernetes API is part of the control-plane on k3s. The only major issue I see is persistent volume support, but persistent volumes in Kubernetes were always a bit flaky and I’ve always preferred to use an externally managed DB or storage solution.
- thowrjasdf32432 3y agoGreat writeup! Love reading about orchestration, especially distributed. > When you create a cluster, we run K3s and the Virtual Kubelet on a single Fly Machine. Why a single machine? Is it because this single fly machine is itself orchestrated by your control plane (Nomad)? > ...we built our own Rust-based TLS-terminating Anycast proxy (and designed a WireGuard/IPv6-based private network system based on eBPF). But the ideas are the same. very cool, is this similar to how Cilium works?
- loloquwowndueo 3y agoThe control plane is not nomad anymore : https://community.fly.io/t/the-death-of-nomad/16220 https://community.fly.io/t/the-death-of-nomad/16220
- Kostic 3y agoWell, that's a surprise. Glad to see that the team is flexible and willing to change. :)
- k__ 3y agoWen custom OS?
- kuhsaft 3y agoHow does this handle multiple containers for a Pod? In a container runtime k8s, containers within a pod share the same network namespace (same localhost) and possibly pid namespace. The press release maps pods to machines, but provides no mapping of pod containers to a Fly.io concept. Are multiple containers allowed? Do they share the same network namespace? Is sharing PID namespace optional? Having multiple containers per pod is a core functionality of Kubernetes.
- remram 3y agoYou can use mount namespaces, or even containers in your VM. Maybe that's how?
- kuhsaft 3y agoFly.io claims it’s “just a VM”. But, Fly.io Machines are an abstraction of microVMs using Firecracker. Building upon that, the FKS implementation is an abstraction on top of Fly.io Machines. So what I’m asking is how, if even, does the FKS implementation support multiple containers for a pod? Using FKS, the abstraction is no longer a VM. It seems that Fly.io Machines support multiple processes for a single container, but not multiple containers per Machine [0]. This means one container image per Machine and thus no shared network namespace across multiple containers. [0] https://community.fly.io/t/multi-process-machines/8375 https://community.fly.io/t/multi-process-machines/8375
- tptacek 3y agoYou can run Docker on a Fly Machine, and run arbitrary numbers of containers inside of it. Or you can run lots of small Fly Machines. FKS is just one model for deploying things.
- kuhsaft 3y agoRight, but what is the point of FKS then? It’s no longer Kubernetes if it doesn’t support a core behavior of Kubernetes. If you only support deploying single containers with single processes on FKS, then you might as well use flyctl. It’s a solvable issue of course. The virtual-kubelet implementation would need to create a Machine running a container runtime image that would then run a the pod containers to match the pod configuration. I think that some disclaimers of the limitations of FKS compared to standardized Kubernetes should be present and highly visible.
- gigapotential 3y agoNice! Was there an internal project name for this? Fubernetes? f8s? :D
- tptacek 3y agoThe internal project name was FKS. How could you do better than fks? :)
- thorawy7 3y agoI ditched k8s and imported an eBPF library into my project. When certain conditions are met I fork logic, and scale back as needed. I haz a v8-like engine built into my project. Not needing a bloated black box sysadmin framework (aside from Linux itself, which is plenty bloated and over engineered) is a huge time saver. And the eBPF libs have a lot of eyes on them. IMO sysadmin and devops are done for. They lasted this long to “create jobs”.
- figassis 3y agoThis looks interesting, but I run a bare metal k8s cluster over wire guard for independence. Not willing to rely on a nonstandard api/platform. Current provider annoys me and I’m shutting down nodes the next day. Probably could not do that on FKS.
- dangoodmanUT 3y agoThis is really exciting, but there are a few things they will certainly have to work through: *Services:* Kubernetes expects DNS records like {pod}.default.svc.cluster.local. In order to achieve this they will have to have some custom DNS records on the "pod" (fly machine) to resolve this with their metadata. Not impossible, but something that has to be take into account. *StatefulSets:* This has 2 major obstacles: The first is dealing with disk. k8s expects that it can move disks to different logical pods when they lose them (e.g. mapping EBS to an EC2 node). The problem here is that fly has a fundamentally different model. It means that it either has to decide not to schedule a pod because it can't get the machine that the disk lives on, or not guarantee that the disk is the same. While this does exist as a setting currently, the former is a serious issue. The second major issue is again with DNS. StatefulSets have ordinal pod names (e.g. {ss-name}-{0..n}.default.sv.cluster.local). While this can be achieved with their machine metadata and custom DNS on the machine, it means that it either has to run a local DNS server to "translate" DNS records to the fly nomenclature, or have to constantly update local services on machines to tell them about new records. Both will incur some penalty.
- xgbi 3y agoI have so many questions, it is a very good article! My most important one is this: can I build a distributed k8s cluster with this? I mean having fly machines in Europe, US and Asia acting as a solid k8s cluster and letting the kube scheduler do its job? If yes then it is better than what the current cloud offerings are, with their region-based implementation. My second question is obviously how is the storage handled when my workload migrates from the US to Europe: so I still profit from NVME speeds? Is it replicated synchronously? Last but not least: does it support RWM semantics? If all the answers are yes, kudos, you just solved many folk’s problems. Stellar article, as usual.
- qdequelen 3y agoDo you handle high throughput volumes? I would need this for testing to host a database service at scale.