{"id":13291848,"url":"https://github.com/mshdg/kubernetes_boinc_client_setup","last_synced_at":"2025-03-10T06:34:06.356Z","repository":{"id":117688631,"uuid":"249754092","full_name":"mshdg/kubernetes_boinc_client_setup","owner":"mshdg","description":"BOINC Client Setup on Kubernetes","archived":true,"fork":false,"pushed_at":"2020-03-24T18:16:06.000Z","size":3,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-29T17:14:56.388Z","etag":null,"topics":["boinc","boinc-docker","boinc-project","homelab","intel-gpu","k8s","kubernetes","microk8s","rosetta-home"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"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/mshdg.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-03-24T16:04:50.000Z","updated_at":"2024-07-29T17:15:03.913Z","dependencies_parsed_at":"2023-10-04T11:53:29.298Z","dependency_job_id":null,"html_url":"https://github.com/mshdg/kubernetes_boinc_client_setup","commit_stats":null,"previous_names":["mshdg/kubernetes_boinc_client_setup"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mshdg%2Fkubernetes_boinc_client_setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mshdg%2Fkubernetes_boinc_client_setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mshdg%2Fkubernetes_boinc_client_setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mshdg%2Fkubernetes_boinc_client_setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mshdg","download_url":"https://codeload.github.com/mshdg/kubernetes_boinc_client_setup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242805703,"owners_count":20187996,"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":["boinc","boinc-docker","boinc-project","homelab","intel-gpu","k8s","kubernetes","microk8s","rosetta-home"],"created_at":"2024-07-29T17:07:07.362Z","updated_at":"2025-03-10T06:34:05.786Z","avatar_url":"https://github.com/mshdg.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# BOINC Client Setup on Kubernetes #\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/jaysgrant/kubernetes_boinc_client_setup)\n\nThis project provides baseline manifests to setup the BOINC computing client on Kubernetes. This evolved from my experimetntation of wanting to run it at home, and contribute to the Rosetta@Home project.\n\nThe yaml manifests provided are a starting point, which I have been running on my MicroK8S development machine in my home lab.\n\nThere are two installation options here, one based on the standard BOINC docker client, without GPU support, and a second that includes Intel legacy GPU support. Legacy in this case is with a Haswell based integrated GPU.\n\nAdditional GPU support options are available, and documented on the [BOINC project page](https://github.com/BOINC/boinc-client-docker).\n\nFor Intel GPU support, I am utilizing the [Intel Kubernetes GPU Plugin](https://github.com/intel/intel-device-plugins-for-kubernetes/).\n\nMy Kubernetes instance uses [MetalLB](https://github.com/metallb/metallb) for loadbalancing. As such, the service entries in each manifest contain an annotation for this. The service can be edited as needed to use NodePort, or ClusterIP setups as well.\n\n## Getting Started ##\n\n### Requirements ###\n\nThe requirements for this project are simple. All you need is a functional Kubernetes setup.\n\n### Non GPU Setup ###\n\nThe non GPU setup is the easiest to run. Open **boinc_k8s/boinc_client_non_gpu.yaml**, and edit service entry as needed. \n1. If you are using the MetalLB L2 configuration, add the name of your pool.\n    * If you prefer Nodeport, or ClusterIP setups, edit the service as appropriate.\n    * Example of the service in its defaults is here:\n    ```yaml\n    ---\n    apiVersion: v1\n    kind: Service\n    metadata:\n      name: rosettaathome\n      namespace: boinc\n      annotations:\n        metallb.universe.tf/address-pool: #Replace this comment with your MetalLB Pool Name\n    spec:\n      selector:\n        app: rosettaathome\n      ports:\n        - port: 80\n          name: http\n          protocol: TCP\n        - port: 443\n          name: https\n          protocol: TCP\n        - port: 31416\n          name: manager\n          protocol: TCP\n      type: LoadBalancer\n    ```\n1. Once the needed edits are made, from your terminal run:\n    ```sh\n    kubectl apply -f boinc_k8s/boinc_client_non_gpu.yaml\n    ```\n1. Thsi will create a the service, PVC, and deployment with a single running pod. The pod can be connected to via BOINC manager for further configuration.\n\n### Intel GPU Setup ###\n\nThe setup of the BOINC client to utilize an integrated Intel GPU is very similar to the non GPU steps. The difference being that in order for me to utilize the integrated GPU in my Haswell based CPU, I had to install the Intel GPU Kubernetes Plugin first.\n\nThe plugin runs as a daemonset on each node of your cluster. I have provided a very basic manifest to install the plugin, which functions with the integrated GPU in my Haswell based i3-4130.\n\n1. Start by ensuring the i915 driver is installed on your node(s).\n1. Install the GPU plugin daemonset by running\n    ```sh\n    kubectl apply -f /intel_gpu_plugin/intel_gpu_plugin.yaml\n    ```\n1. Once the plugin is installed, and running, you can verify the GPU is available via the following command.\n    ```sh\n    kubectl get nodes -o=jsonpath=\"{range .items[*]}{.metadata.name}{'\\n'}{' i915: '}{.status.allocatable.gpu\\.intel\\.com/i915}{'\\n'}\"\n    ```\n1. You should see similar output to the following, showing the GPU available for use.\n    ```sh\n    dc-kube-01\n    i915: 1\n    ```\n1. Once the GPU plugin installation is completed, open /boinc_k8s/boinc_client_intel_gpu.yaml, and edit the service entry as noted in the Non GPU Setup portion of this document.\n1. After your edits are complete, apply the GPU manifest.\n    ```sh\n    kubectl apply -f boinc_k8s/boinc_client_intel_gpu.yaml\n    ```\n1. Verify all pods are running, and then you can use BOINC manager to configure the project.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmshdg%2Fkubernetes_boinc_client_setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmshdg%2Fkubernetes_boinc_client_setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmshdg%2Fkubernetes_boinc_client_setup/lists"}