raspberry-pi-dramble
client-go
raspberry-pi-dramble | client-go | |
---|---|---|
11 | 38 | |
1,648 | 8,632 | |
- | 1.0% | |
2.5 | 9.2 | |
over 1 year ago | 3 days ago | |
Shell | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
raspberry-pi-dramble
-
Why is it so hard to find a 5 port PoE switch where all 5 ports are PoE?
https://www.pidramble.com - but you do need to power the router. 5th port is an uplink
-
Heatsinks for Raspberry Pi cluster with PoE
Don't bother. Just put them on an open stack and blow a quiet Noctua fan sideways through the stack. I used to have a four-pi4 cluster ala https://www.pidramble.com and one fan blowing back to front was easily good enough. I also removed the fans from the official PoE HATs since they sounded like rocket engines no matter what I did.
-
How would I power multiple RPI's?
There's no rack, it's simply on the corner of my desk. I haven't made photos of it but it looks pretty much like Jeff Geerling's Dramble: https://www.pidramble.com/
-
Considering building a NUC k8s cluster, looking for inspiration
Had a pi 'dramble' just like this one and it worked fine. I ran k3s at the time on it. Since it was a lab experimentation thing, I didn't throw more hardware at it, but I could have likely gotten similar results with a bunch of Vagrant/VirtualBox VMs on one NUC.
- Pi k8s! This is my pi4-8gb powered hosted platform. 8 pi4s for kubeadm k8s cluster, and one for a not so 'nas' share. I use gitlab runners with helmfile to manage my applications. Running over a year and finally passed the CKA with most of my practice on this plus work clusters. AMA welcome!
-
You did WHAT with Ansible?! Automate the Uncommon (my AnsibleFest 2021 Presentation)
Automate the Pi Dramble website I run in my basement with Drupal Pi.
-
A quick write-up of my current setup with a Raspberry Pi 4
How is latency and stuff? Any slowness that you wouldn't expect from the software that may come from running it on a rpi4? I've been thinking of setting up a few services, but I kinda want to do something like the Pi Dramble, wasn't even aware that a single pi would have the power to run all of these services. Though I'm not actually surprised it does.
-
Creating a modular pi cluster?
A couple years ago when I thought I'd have to get into kubernetes for a living, I built a 4x4GB pi4 cluster with the exact parts list from Jeff Geerling's "dramble" setup (link) and did a bunch of experimentation with k3s as a lightweight cluster solution. Worked pretty amazingly for things like "spin me up 10 more of those things" and for moving things around to upgrade the SD card on the 3rd pi while keeping the services running on the other pi. But I don't need to do kubernetes for a living so the cluster is just sitting here collecting dust powered-down basically.
-
Kubernetes 20 Pi cluster
I see this kind of question asked a lot when people are posting their Kubernetes Pi clusters. The rpi 4 quad core with 4-8GB RAM gives a lot of potential for the price in a kuberenetes setup I feel. I found the pi dramble project interesting, and even more the turing pi using rpi compute modules. Are NUCs really a cheaper alternative for a kubernetes cluster, every time I start try to come up with something I end up with a far more expensive setup and fewer cores. Any hints on viable setups, e.g. replacing 4x POE powered RPI 4's.?
-
My PoE Pi Cluster.
My setup is exactly the same as the top photo on https://www.pidramble.com just with the stack'o'pi zip-tied to the switch so I can move it around without the things sliding around.
client-go
-
The Inner Workings of Kubernetes Management Frontends — A Software Engineer’s Perspective
The Kubernetes clients (e.g., Go client) support developers with both methods to connect to a cluster, as we can see in the following examples.
-
Has anyone ever tried to learn how k8s works?
My suggestion would be to start looking at things like https://github.com/kubernetes/client-go first in order to get a feel for the API and how data plane k8s components interact with the apiserver (it's the same thing that kubelet uses). Then move on to trying to build your own k8s operator to get a feel for how people expand and customize k8s functionality without having to modify upstream at all. IMO the codebase itself is too messy and in constant flux to make too much sense of it unless you are planning to contribute to upstream.
-
Can't override Kubernetes config in Kubernetes Go client
GitHub related issue https://github.com/kubernetes/client-go/issues/735
-
CUE compared to helm/kustomize...
CUE is cool and all but as soon as I start writing real code structures I want to reach for client-go.
-
Go 1.21 will (probably) download newer toolchains on demand by default
I'm... really not sure I agree with this, from a philosophical point of view. It feels like this is making "eh, we'll just upgrade our Go version next quarter" too easy; ultimately some responsibility toward updating your application's Go version to work with what new dependencies require should fall on Us, the application developers. Sure, we're bad at it. Everyone's lived through running years-old versions of some toolchain. But I think this just makes the problem worse, not better.
Its compounded by the problem that, when you're setting up a new library, the `go` directive in the mod file defaults to your current toolchain; most likely a very current one. It would take a not-insignificant effort on the library author's part to change that to assert the true-minimum version of Go required, based on libraries and language features and such. That's an effort most devs won't take on.
I'd also guess that many developers, up-to this point if not indefinitely because education is hard, interpreted that `go` directive to mean more-of "the version of go this was built with"; not necessarily "the version of go minimally required". There are really major libraries (kubernetes/client-go [1]) which assert a minimum go version of 1.20; the latest version (see, for comparison, the aws-sdk, which specifies a more reasonable go1.11 [2]). I haven't, you know, fully audited these libraries, but 1.20 wasn't exactly a major release with huge language and library changes; do they really need 1.20? If devs haven't traditionally operated in this world where keeping this value super-current results in actually significant downstream costs in network bandwidth (go1.20 is 100mb!) and CI runtime, do we have confidence that the community will adapt? There's millions of Go packages out there.
Or, will a future version of Go patch a security update, not backport it more than one version or so, and libraries have to specify the newest `go` directive version, because manifest security scanning and policy and whatever? Like, yeah, I get the rosy worldview of "your minimum version encodes required language and library features", but its not obvious to me that this is how this field is, or even will be, used.
Just a LOT of tertiary costs to this change which I hope the team has thought through.
[1] https://github.com/kubernetes/client-go/blob/master/go.mod#L...
[2] https://github.com/aws/aws-sdk-go/blob/main/go.mod
-
How to list all kubernetes objects with specific label using client-go
I looked at dynamic package, but it seems like it needs GroupVersionResource, which is different for, say, Service objects and Deployment objects. Also when I pass schema.GroupVersionResource{Group: "apps", Version: "v1"} it doesn't find anything, when I pass schema.GroupVersionResource{Version: "v1"} it finds only namespace object and also doesn't looks for labels, though I provided label options:
-
What's the best way to get notified when kubernetes Deployments change using the k8s.io/client-go library?
I'm writing a script that uses the k8s.io/client-go library (godocs here) to manipulate Deployments. In particular, I want to add a label selector to every Deployment in my cluster. Deployment label selectors are immutable. So my approach is to:
- K8S Get deployment liveness probe status
-
Learning kubebuilder - good examples of Golang watching/manipulating k8s objects?
Actually, kubebuilder is not using the standard Go libraries, but one using reflection to dynamically resolve the client based on the type you hand it (which is arguably better). The "official" client is k8s.io/client-go.
-
My LFX Mentorship experience with OpenELB
Then on June 18th, 2022, I got a chance to meet our mentors and the other mentee of OpenELB (the mentee and the mentors of OpenFunction were also there). There I was informed about how to start working on the project, so I started learning about using the Kubernetes API client. After experimenting with the official Kubernetes Client, I learned that it's not very feasible to use that for dealing with CRDs (custom resource definitions), so I explored the controller-runtime client as per what I found in many sources, and found that it was a great fit for the backend of our project. During that time, I also built a simple project to see if everything would work as expected or not (as this was the first time I dealt with a Kubernetes client, I considered that debugging would be easier in a smaller project).
What are some alternatives?
docker-openwrt - OpenWrt running in Docker
kubebuilder - Kubebuilder - SDK for building Kubernetes APIs using CRDs
alpine-qbittorrent-openvpn - qBittorrent docker container with OpenVPN client running as unprivileged user on alpine linux
controller-runtime - Repo for the controller-runtime subproject of kubebuilder (sig-apimachinery)
lancache-rpi - (Unofficial RPI Version) - A lancache service capable of caching all CDNs in a single instance
kustomize - Customization of kubernetes YAML configurations
RPi4 - Raspberry Pi 4 UEFI Firmware Images
celery - Distributed Task Queue (development branch)
docker-zulip - Container configurations, images, and examples for Zulip.
apimachinery
nfs-subdir-external-provisioner - Dynamic sub-dir volume provisioner on a remote NFS server.
k3s - Lightweight Kubernetes