k3s-oci-cluster
longhorn
Our great sponsors
k3s-oci-cluster | longhorn | |
---|---|---|
6 | 77 | |
208 | 5,552 | |
- | 3.2% | |
0.0 | 9.4 | |
5 months ago | 4 days ago | |
HCL | Shell | |
GNU General Public License v3.0 only | 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.
k3s-oci-cluster
-
K8s cluster with OCI free-tier and Raspberry Pi4 (part 1)
After you've cloned the repo, go to oci/terraform.tfvars and edit all values with the ones from your notes file. This build uses the great terraform configuration files from this repo of garutilorenzo (using version 2.2; if you have errors running all of this, you should check what changed in this repo since v2.2, or 01.02.23). You can read here if you want to customize your configuration and edit the main.tf file. This is the diagram that garutilorenzo made and how your deployment will look like (this tutorial is without Longhorn and ArgoCD, with 1 server nodes + 3 worker nodes and with ingress controller set as Traefik): *note - I've got some problems with clock of WSL2 not being synced to Windows clock. And provisioning didn't worked so if you receive clock errors too, verify your time with datecommand, if out of sync just run sudo hwclock -s or sudo ntpdate time.windows.com. Now just run terraform plan and then terraform apply. If everything was ok you should have your resources created.
- Is there a step by step guide to Oracle Free Tier setups?
-
OCI free Kubernetes cluster, new terraform module release
This new release v2.0 introduces:
-
Deploy Kubernetes (K8s) on Amazon AWS using mixed on-demand and spot instances
We use the same stack used in this repository. This stack need longhorn and nginx ingress.
-
Deploy a Kubernetes cluster for free, using k3s and Oracle always free resources.
This module will deploy a Kubernetes cluster for free, using K3s and Oracle always free resources.
-
Deploy a Kubernetes cluster for free, using K3s and Oracle always free resources
Var Required Desc region yes set the correct OCI region based on your needs availability_domain yes Set the correct availability domain. See how to find the availability domain compartment_ocid yes Set the correct compartment ocid. See how to find the compartment ocid cluster_name yes the name of your K3s cluster. Default: k3s-cluster k3s_token yes The token of your K3s cluster. How to generate a random token my_public_ip_cidr yes your public ip in cidr format (Example: 195.102.xxx.xxx/32) environment yes Current work environment (Example: staging/dev/prod). This value is used for tag all the deployed resources compute_shape no Compute shape to use. Default VM.Standard.A1.Flex. NOTE Is mandatory to use this compute shape for provision 4 always free VMs os_image_id no Image id to use. Default image: Canonical-Ubuntu-20.04-aarch64-2022.01.18-0. See how to list all available OS images oci_core_vcn_cidr no VCN CIDR. Default: oci_core_vcn_cidr oci_core_subnet_cidr10 no First subnet CIDR. Default: 10.0.0.0/24 oci_core_subnet_cidr11 no Second subnet CIDR. Default: 10.0.1.0/24 oci_identity_dynamic_group_name no Dynamic group name. This dynamic group will contains all the instances of this specific compartment. Default: Compute_Dynamic_Group oci_identity_policy_name no Policy name. This policy will allow dynamic group 'oci_identity_dynamic_group_name' to read OCI api without auth. Default: Compute_To_Oci_Api_Policy kube_api_port no Kube api default port Default: 6443 public_lb_shape no LB shape for the public LB. Default: flexible. NOTE is mandatory to use this kind of shape to provision two always free LB (public and private) http_lb_port no http port used by the public LB. Default: 80 https_lb_port no http port used by the public LB. Default: 443 k3s_server_pool_size no Number of k3s servers deployed. Default 2 k3s_worker_pool_size no Number of k3s workers deployed. Default 2 install_longhorn no Boolean value, install longhorn "Cloud native distributed block storage for Kubernetes". Default: true longhorn_release no Longhorn release. Default: v1.2.3 unique_tag_key no Unique tag name used for tagging all the deployed resources. Default: k3s-provisioner unique_tag_value no Unique value used with unique_tag_key. Default: https://github.com/garutilorenzo/k3s-oci-cluster PATH_TO_PUBLIC_KEY no Path to your public ssh key (Default: "~/.ssh/id_rsa.pub) PATH_TO_PRIVATE_KEY no Path to your private ssh key (Default: "~/.ssh/id_rsa)
longhorn
-
Diskomator – NVMe-TCP at your fingertips
I'm looking forward to Longhorn[1] taking advantage of this technology.
-
K3s – Lightweight Kubernetes
I've been using a 3 nuc (actually Ryzen devices) k3s on SuSE MicroOS https://microos.opensuse.org/ for my homelab for a while, and I really like it. They made some really nice decisions on which parts of k8s to trim down and which Networking / LB / Ingress to use.
The option to use sqlite in place of etcd on an even lighter single node setup makes it super interesting for even lighter weight homelab container environment setups.
I even use it with Longhorn https://longhorn.io/ for shared block storage on the mini cluster.
If anyone uses it with MicroOS, just make sure you switch to kured https://kured.dev/ for the transactional-updates reboot method.
I'd love to compare it against Talos https://www.talos.dev/ but their lack of support for a persistent storage partition (only separate storage device) really hurts most small home / office usage I'd want to try.
-
Difference between snapshot-cleanup and snapshot-delete in Longhorn recurring job?
Hi,i was wondering the same. Found more information here in this document: https://github.com/longhorn/longhorn/blob/v1.5.x/enhancements/20230103-recurring-snapshot-cleanup.md
-
The Next Gen Database Servers Powering Let's Encrypt(2021)
Like most people on r/homelab, it started out with Plex. Rough timeline/services below:
0. Got a Synology DS413 with 4x WD Red 3TB drives. Use Playstation Media Server to stream videos from it. Eventually find some Busybox stuff to add various functionality to the NAS, but it had a habit of undoing them periodically, which was frustrating. I also experienced my first and (knock on wood) only drive failure during this time, which concluded without fanfare once the faulty drive was replaced, and the array repaired itself.
1. While teaching self Python as an Electrical Distribution Engineer at a utility, I befriended the IT head, who gave me an ancient (I think Nehalem? Quad-core Xeon) Dell T310. Promptly got more drives, totaling 7, and tried various OS / NAS platforms. I had OpenMediaVault for a while, but got tired of the UI fighting me when I knew how to do things in shell, so I switched to Debian (which it's based on anyway). Moved to MergerFS [0] + SnapRAID [1] for storage management, and Plex for media. I was also tinkering with various Linux stuff on it constantly.
1.1 Got tired of my tinkering breaking things and requiring troubleshooting/fixing (in retrospect, this provided excellent learning), so I installed Proxmox, reinstalled Debian, and made a golden image with everything set up as desired so I could easily revert.
1.2 A friend told me about Docker. I promptly moved Plex over to it, and probably around this time also got the *Arr Stack [2] going.
2. Got a Supermicro X9DRi-LN4F+ in a 2U chassis w/ 12x 3.5" bays. Got faster/bigger CPUs (E5-2680v2), more RAM, more drives, etc. Shifted container management to Docker Compose. Modded the BIOS to allow it to boot from a NVMe drive on a PCIe adapter.
2.1 Shifted to ZFS on Debian. Other than DKMS occasionally losing its mind during kernel upgrades, this worked well.
2.2 Forked [3] some [4] Packer/Ansible projects to suit my needs, made a VM for everything. NAS, Dev, Webserver, Docker host, etc. Other than outgrowing (IMO) MergerFS/SnapRAID, honestly at this point I could have easily stopped, and could to this day revert back to this setup. It was dead reliable and worked extremely well. IIRC I was also playing with Terraform at this time.
2.3 Successfully broke into tech (Associate SRE) as a mid-career shift, due largely (according to the hiring manager) to what I had done with my homelab. Hooray for hobbies paying off.
3. Got a single Dell R620. I think the idea was to install either pfSense or VyOS on it, but that never came to fruition. Networking was from a Unifi USG (their tiny router + firewall + switch) and 8-port switch, with some AC Pro APs.
4. Got two more R620s. Kubernetes all the things. Each one runs Proxmox in a 3-node cluster with two VMs - a control plane, and worker.
4.0.1 Perhaps worth noting here that I thoroughly tested my migration plan via spinning up some VMs in, IIRC, Digital Ocean that mimicked my home setup. I successfully ran it twice, which was good enough for me.
4.1 Played with Ceph via Rook, but a. disliked (and still to this day) running storage for everything out of K8s b. kept getting clock skew between nodes. Someone on Reddit mentioned it was my low-power C-state settings, but since that was saving me something like ~50 watts/node, I didn't want to deal with the higher power/heat. I landed on Longhorn [5] for cluster storage (i.e. anything that wasn't being handled by the ZFS pool), which was fine, but slow. SATA SSDs (used Intel enterprise drives with PLP, if you're wondering) over GBe aren't super fast, but they should be able to exceed 30 MBps.
4.1.1 Again, worth noting that I spent literally a week poring over every bit of Ceph documentation I could find, from the Red Hat stuff to random Wikis and blog posts. It's not something you just jump into, IMO, and most of the horror stories I read boiled down to "you didn't follow the recommended practices."
5. Got a newer Supermicro, an X11SSH-F, thinking that it would save power consumption over the older dual-socket I had for the NAS. It turned out to not make a big difference. For some reason I don't recall, I had a second X9DRi-LN4F+ mobo, so I sold the other one with the faster CPUs, bought some cheaper CPUs for the other one, and bought more drives for it. It's now a backup target that boots up daily to ingest ZFS snapshots. I have 100% on-site backups for everything. Important things (i.e. anything that I can't get from a torrent) are also off-site.
6. Got some Samsung PM863 NVMe SSDs mounted on PCIe adapters for the Dells, and set up Ceph, but this time handled by Proxmox. It's dead easy, and for whatever reason isn't troubled by the same clock skew issues as I had previously. Still in the process of shifting cluster storage from Longhorn, but I have been successfully using Ceph block storage as fast (1 GBe, anyway - a 10G switch is on the horizon) storage for databases.
So specifically, you asked what I do with the hardware. What I do, as far as my family is concerned, is block ads and serve media. On a more useful level, I try things out related to my job, most recently database-related (I moved from SRE to DBRE a year ago). I have MySQL and Postgres running, and am constantly playing with them. Can you actually do a live buffer pool resize in MySQL? (yes) Is XFS actually faster than ext4 for large DROP TABLE operations? (yes, but not by much) Is it faster to shut down a MySQL server and roll back to a previous ZFS snapshot than to rollback a big transaction? (often yes, although obviously a full shutdown has its own problems) Does Postgres suffer from the same write performance issue as MySQL with random PKs like UUIDv4, despite not clustering by default? (yes, but not to the same extent - still enough to matter, and you should use UUIDv7 if you absolutely need them)
I legitimately love this stuff. I could quite easily make do without a fancy enclosed rack and multiple servers, but I like them, so I have them. The fact that it tends to help my professional growth out at the same time is a bonus.
[0]: https://github.com/trapexit/mergerfs
[3]: https://github.com/stephanGarland/packer-proxmox-templates
[4]: https://github.com/stephanGarland/ansible-initial-server
[5]: https://longhorn.io
-
Ask HN: Any of you run Kubernetes clusters in-house?
Been running k3s for personal projects etc for some time now on a cluster of raspberry pies. Why pies? Were cheap at the time and wanted to play with arm. I don’t think I would suggest them right now. Nucs will be much better value for money.
Some notes:
Using helm and helmfile https://github.com/helmfile/helmfile for deployments. Seems to work pretty nicely and is pretty flexible.
As I’m using a consumer internet provider ingress is done through cloudflare tunnels https://github.com/cloudflare/cloudflare-ingress-controller in order to not have to deal with ip changes and not have to expose ports.
Persistent volumes were my main issue when previously attempting this, and what changed everything for me was longhorn. https://longhorn.io Make sure to backup your volumes.
Really hyped for https://docs.computeblade.com/ xD
-
Container redundancy with multiple Unraid servers?
But, if you are really wanting high availability, then roll a kubernetes cluster, and run clustered storage such as longhorn.io, or rook/ceph.
- I created UltimateHomeServer - A K3s based all-in-one home server solution
-
What alternatives are there to Longhorn?
I was mainly referring to this one https://github.com/longhorn/longhorn/discussions/5931 but yeah I peeked into that one too. I'm not at my computer at the moment, how do I provide a support bundle?
-
How do I clean up a Longhorn volume? Trimming the volume doesn't work, "cannot find a valid mountpoint for volume"
If it's RWX, Longhorn 1.5.0 will support that. https://github.com/longhorn/longhorn/issues/5143
-
Setting Up Kubernetes Cluster with K3S
You have now finally deployed an enterprise-grade Kubernetes cluster with k3s. You can now deploy some work on this cluster. Some components to take note of are for ingress, you already have Traefik installed, longhorn will handle storage and Containerd as the container runtime engine.
What are some alternatives?
oracle-cloud-terraform-examples - Oracle cloud terraform examples, provision oracle cloud resources using terraform
rook - Storage Orchestration for Kubernetes
k3s-aws-terraform-cluster - Deploy an high available K3s cluster on Amazon AWS
nfs-subdir-external-provisioner - Dynamic sub-dir volume provisioner on a remote NFS server.
terraform-oci-tdf-network-security - (OCI) Oracle Cloud Infrastructure module to manage security policies
zfs-localpv - Dynamically provision Stateful Persistent Node-Local Volumes & Filesystems for Kubernetes that is integrated with a backend ZFS data storage stack.
flannel - flannel is a network fabric for containers, designed for Kubernetes
postgres-operator - Production PostgreSQL for Kubernetes, from high availability Postgres clusters to full-scale database-as-a-service.
terraform-hcloud-kube-hetzner - Optimized and Maintenance-free Kubernetes on Hetzner Cloud in one command!
harvester - Open source hyperconverged infrastructure (HCI) software
iac-intro-terraform-packer - Assets for the "Introduction to Infrastructure as Code with Terraform and Packer" article on Dev.to
nfs-ganesha-server-and-external-provisioner - NFS Ganesha Server and Volume Provisioner.