{"id":25083900,"url":"https://github.com/sh4d1/vks","last_synced_at":"2026-01-11T01:58:00.996Z","repository":{"id":103511413,"uuid":"313272511","full_name":"Sh4d1/vks","owner":"Sh4d1","description":"Virtual Kubelet Provider for Systemd","archived":false,"fork":false,"pushed_at":"2020-11-16T13:55:44.000Z","size":155,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-07T06:31:49.638Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sh4d1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-16T10:56:00.000Z","updated_at":"2021-02-01T16:55:59.000Z","dependencies_parsed_at":"2023-03-12T05:45:41.461Z","dependency_job_id":null,"html_url":"https://github.com/Sh4d1/vks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sh4d1%2Fvks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sh4d1%2Fvks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sh4d1%2Fvks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sh4d1%2Fvks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sh4d1","download_url":"https://codeload.github.com/Sh4d1/vks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246634802,"owners_count":20809305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-07T06:29:35.096Z","updated_at":"2026-01-11T01:58:00.954Z","avatar_url":"https://github.com/Sh4d1.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\nNOTE: Work In Progress\n\n# Virtual Kubelet for systemd\n\nThis is an virtual kubelet provider that interacts with systemd. The aim is to make this to work\nwith K3S and go from there.\n\n`vks` will start pods as plain processes, there are no cgroups (yet, maybe systemd will allow for\nthis easily), but generally there is no isolation. You basically use the k8s control plane to start\nlinux processes. There is also no address space allocated to the PODs specically, you are using the\nhost's networking.\n\n\"Images\" are referencing (Debian) packages, these will be apt-get installed. Discoverying that an\ninstalled package is no longer used is hard, so this will not be done.\n\nEach scheduled unit will adhere to a nameing scheme so `vks` knows which ones are managed by it.\n\n## Questions\n\n* Pods can contain multiple containers. In systemd each container is a Unit (file). How can we keep\n  track of these diff. Units and re-create the Pod when we need to?\n* Pod storage, secret etc. Just something on disk? `/var/lib/\u003csomething\u003e`?\n* How to provision a Debian system to be able to join a k3s cluster? Something very minimal is\n  needed here. _Maybe_ getting to k3s super early will help. We can then install extra things to\n  configure?\n* Add a private repo for debian packages. I.e. I want to install latest CoreDNS which isn't in\n  Debian. I need to add a repo for this... How?\n* If imagePullPolicy is set to Always, then apt-get install the binary ? If not check if the \"image\"\n  can be found in $PATH and use it?\n* namespaces?? Are they useful on a technical level for systemd?\n\n## Use with K3S\n\nDownload k3s from it's releases on GitHub, you just need the `k3s` binary. Use the `k3s/k3s` shell\nscript to start it - this assumes `k3s` sits in \"~/tmp/k3s\". The script basically starts k3s with\nbasically _everything_ disabled.\n\nCompile cmd/virtual-kubelet and start it with:\n\n~~~\n./cmd/virtual-kubelet/virtual-kubelet --kubeconfig ~/.rancher/k3s/server/cred/admin.kubeconfig \\\n--enable-node-lease --disable-taint\n~~~\n\nNow a `k3s kubcetl get nodes` should show the virtual kubelet as a node:\n~~~\nNAME    STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE            KERNEL-VERSION     CONTAINER-RUNTIME\ndraak   Ready    agent   6s    v1.18.4   \u003cnone\u003e        \u003cnone\u003e        Ubuntu 20.04.1 LT   5.4.0-53-generic   systemd 245 (245.4-4ubuntu3.3)\n~~~\n\n`draak` is my machine's name.\n\nYou can now try to schedule a pod: `k3s/kubelet apply -f k3s/openssh-server.yaml`. This will call\nout and try to schedule.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsh4d1%2Fvks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsh4d1%2Fvks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsh4d1%2Fvks/lists"}