{"id":13561445,"url":"https://github.com/erda-project/kubeprober","last_synced_at":"2025-04-05T06:08:13.169Z","repository":{"id":37824224,"uuid":"375194977","full_name":"erda-project/kubeprober","owner":"erda-project","description":"Large-scale Kubernetes cluster diagnostic tool.","archived":false,"fork":false,"pushed_at":"2024-01-11T05:31:12.000Z","size":281442,"stargazers_count":139,"open_issues_count":2,"forks_count":39,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-29T05:06:53.401Z","etag":null,"topics":["cluster-analysis","docker","go","golang","k8s","kubernetes","observability"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erda-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null}},"created_at":"2021-06-09T01:52:13.000Z","updated_at":"2025-03-05T15:59:13.000Z","dependencies_parsed_at":"2024-01-11T07:46:42.602Z","dependency_job_id":null,"html_url":"https://github.com/erda-project/kubeprober","commit_stats":null,"previous_names":["erda-project/kubeprobe"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Fkubeprober","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Fkubeprober/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Fkubeprober/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erda-project%2Fkubeprober/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erda-project","download_url":"https://codeload.github.com/erda-project/kubeprober/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294539,"owners_count":20915340,"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":["cluster-analysis","docker","go","golang","k8s","kubernetes","observability"],"created_at":"2024-08-01T13:00:56.769Z","updated_at":"2025-04-05T06:08:13.154Z","avatar_url":"https://github.com/erda-project.png","language":"Go","funding_links":[],"categories":["Kubernetes tooling","Go"],"sub_categories":[],"readme":"English | [简体中文](./README_CN.md)\n\n# KubeProber\n\n###  [Home](https://k.erda.cloud) | [Document](https://docs.erda.cloud/latest/manual/eco-tools/kubeprober/guides/introduction.html) | [RoadMap](./docs/roadmap.md)\n\n## Demo\n![Screenshot](https://static.erda.cloud/images/kc-en.gif)\n\n## What is KubeProber?\nKubeProber is a diagnostic tool designed for large-scale Kubernetes clusters. It is used to perform diagnostic items in the kubernetes cluster to prove that the functions of the cluster are normal,  KubeProber has the following characteristics:\n\n* **Large-scale clusters support** Supports multi-cluster management, supports configuring the relationship between clusters and diagnostic items on the management side and viewing the diagnostic results of all clusters in a unified manner;\n* **Cloud Native** The core logic is implemented by [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/), providing complete Kubernetes API compatibility;\n* **Extensible** Support user-defined diagnostic items\n\nDifferent from the monitoring system, KubeProber proves the functions of the cluster are normal from the perspective of diagnostic. Monitoring is a forward link and cannot cover all scenarios in the system. The monitoring data of each environment in the system is normal and cannot prove the system is 100% normal, so a tool is needed to prove the availability of the system from the reverse, and fundamentally to discover unavailable points in the cluster before users, such as:\n* Whether all nodes in the set can be scheduled, whether there are special taints, etc;\n* Whether the pod can be normally created, destroyed, and verified the entire link from kubernetes, kubelet to docker;\n* Create a service and test unicom to verify whether the kube-proxy link is normal;\n* Resolve an internal or external domain name to verify whether CoreDNS is working properly;\n* Visit an ingress domain name to verify whether the ingress component in the cluster is working properly;\n* Create and delete a namespace to verify whether the related webhook is working properly;\n* Perform operations such as put/get/delete on Etcd to verify whether Etcd is running normally;\n* Verify the normal operation of MySQL through the operation of mysql-client;\n* Simulate users to log in and operate the business system to verify whether the main business process is frequent;\n* Check whether the certificates of each environment have expired;\n* Expiration check of cloud resources;\n* ... more!\n\n## Architecture\n![Kubeprober Architecture](./docs/assets/architecture.jpg)\n\n### probe-master\n\nThe operator running on the management cluster. This operator maintains two CRDs, one is Cluster, which is used to manage the managed cluster, and the other is Probe, which is used to manage the built-in and user-written diagnostic items, probe-master Through watch these two CRDs, the latest diagnostic configuration is pushed to the managed cluster, and probe-master provides an interface for viewing the diagnosis results of the managed cluster.\n\n### probe-agent\n\nThe operator running on the managed cluster. This operator maintains two CRDs. One is a Probe that is exactly the same as the probe-master. The probe-agent executes the cluster’s diagnostic items according to the definition of the probe. The other is ProbeStatus for Record the diagnosis results of each Probe. Users can view the diagnosis results of the cluster through kubectl get probestatus in the managed cluster.\n## Getting started\nGet start with this [doc](https://docs.erda.cloud/latest/manual/eco-tools/kubeprober/guides/install.html).\n## To start developing kubeprober\nYou can run and build probe-master and probe-agent locally. please make sure that ~/.kube/config can access the kubernetes cluster.\n### install crd \u0026\u0026 webhook resources\n```\nmake dev\n```\n### run probe-master\n```\nAPP=probe-master make run\n```\n### run probe-tunnel\n```\n# export env get from the create cluster crd\nexport PROBE_MASTER_ADDR=\"http://127.0.0.1:8088\"\nexport CLUSTER_NAME=\"moon\"\nexport SECRET_KEY=\"a944499f-97f3-4986-89fa-bc7dfc7e009a\" \n\n# run probe-agent\nAPP=probe-tunnel make run\n```\n### run probe-agent\n```\nAPP=probe-agent make run\n```\nprobe-agent parameters precedence order and format\n```\n# precedence order and format, each item takes precedence over the item below it, (e.g --cluster-name)\nflag       --cluster-name\nenv          CLUSTER_NAME\nconfig       cluster_name\ndefault\n```\n\n### build binary file\n```\nAPP=probe-master make build\nAPP=probe-agent make build\n```\n### build image\n```\n# build with default version: latest\n# output image format: kubeprober/probe-master:latest\nAPP=probe-master make docker-build\n\n# build with custom version: v0.0.1\n# output image format: kubeprober/probe-master:v0.0.1\nAPP=probe-master V=v0.0.1 make docker-build\n\n# build with default version: latest\nAPP=probe-agent make docker-build\n\n# push with default version: latest\nAPP=probe-agent make docker-push\n\n# build \u0026 push\nAPP=probe-agent make docker-build-push\n```\n### Write your prober\n[custom probes](./probers/README.md)\n\n## Contributing\nContributions are always welcomed. Please refer to [Contributing to KubeProber](CONTRIBUTING.md) for details.\n\n## Contact Us\nIf you have any questions, please feel free to contact us.\n\n- Email: erda@terminus.io\n- Zhihu：[Erda技术团队](https://www.zhihu.com/people/erda-project) (A Chinese knowledge community, similar to Quora.)\n- WeChat Official Account:\n\n    ![Erda WeChat](./docs/assets/wechat-small.jpg)\n\n## License\n\nKubeProber is under the Apache 2.0 license. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferda-project%2Fkubeprober","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferda-project%2Fkubeprober","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferda-project%2Fkubeprober/lists"}