GithubHelp home page GithubHelp logo

ty-dc / kdoctor Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kdoctor-io/kdoctor

0.0 1.0 0.0 19.44 MB

Home Page: https://ty-dc.github.io/kdoctor

License: Apache License 2.0

Shell 5.58% Go 84.07% Makefile 8.34% Smarty 1.11% Dockerfile 0.90%

kdoctor's Introduction

kdoctor

Auto Release Version Auto Nightly CI codecov Go Report Card CodeFactor badge


English | 简体中文

Introduction

kdoctor is a Kubernetes data plane testing component that conducts functional and performance tests on clusters using proactive pressure injection. It addresses the operational needs of network, storage, and applications by adopting a cloud-native approach based on extensive research and abstraction. With its CRD design, kdoctor can seamlessly integrate with observability components.

kdoctor mainly offers three types of tasks:

  • AppHttpHealthy: according to the task configuration, perform connectivity checks using HTTP and HTTPS protocols on specified addresses within or outside the cluster, supporting various request methods such as PUT, GET, and POST.
  • NetReach: conduct connectivity inspections on Pod IP, ClusterIP, NodePort, LoadBalancer IP, Ingress IP, and even Pods with multiple network interfaces or dual-stack IPs.
  • NetDns: perform connectivity checks on designated DNS servers within or outside the cluster, supporting UDP, TCP, and TCP-TLS protocols.

Advantages of kdoctor over traditional testing components:

  • By configuring inspection tasks through CRDs, users only need to focus on the inspection targets, frequency, pressure parameters, and expected results.
  • Pressure-injecting agents are dynamically run as Deployments or DaemonSets, achieving the effect of multiple pressure-injecting machines.
  • The execution of tasks utilizes default agents or newly created agents based on the task's spec configurations, enabling resource reuse and task resource isolation.
  • Agents are bound to corresponding resource targets such as ingress and service. Each agent Pod mutually accesses the bound resources according to the task configuration, deriving conclusions from the request results.
  • Through performance optimization, the pressure-injecting client significantly reduces resource consumption during requests.
  • Inspection reports can be generated through various means, including logging, aggregated APIs, and file storage.

Architecture

Your Image Description

Components:

  • kdoctor agent: kdoctor controller: a persistent Deployment responsible for CR monitoring, task creation, and task report aggregation.
  • kdoctor agent: dynamically created on-demand as Deployments or DaemonSets to execute tasks.

Quick Start

Install

Task Get Started

Contribution

Refer to the Contribution doc.

License

kdoctor is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

kdoctor's People

Contributors

carryaimp avatar dependabot[bot] avatar icarus9913 avatar ii2day avatar jeanine-tw avatar katepangliu avatar ty-dc avatar weizhoublue avatar windsonsea avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.