Azure / Azure/kdebug

Project overview

Abierto
#1 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

vision
Lenguaje dominante
Go
Estrellas
54
Forks
21
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

# Summary

Develop an app running in Kubernetes is not easy. Managing a Kubernetes cluster is even harder. It takes years of experience to understand how Kubernetes works, how to read logs from different components and where to start when some part of your cluster are not working.

This projects aims to create a simple tool to run diagnostics and gives advices for your troubleshooting direction in ops scenario.

# Goals

* A handy ops tool for troubleshooting Kubernetes and apps in it

# Non-Goals

* Deep integration with app development flow
* Debug Kubernetes itself

# User Experience

At early stage it should be a CLI tool with minimum dependencies.

## Check sub command

Check sub command is used to run specific check suites.

For example, following command runs DNS and HTTP check suites:

```bash
kdebug check -s dns,http,kube,app
```

It generates a report after checks complete.

An example for healthy report:
```
* DNS
=> [OK] System DNS
=> [OK] In-cluster CoreDNS
=> [OK] Azure DNS
=> [OK] Google DNS
* HTTP
=> [OK] Connectivity to kube-apiserver
=> [OK] Connectivity to google.com
* Kubernetes
=> [OK] Kubelet is running
* Apps
=> [OK] All pods are running

All OK.
```

An example for unhealthy report:

```
* DNS
=> [OK] System DNS
=> [Fail] In-cluster CoreDNS
=> [OK] Azure DNS
=> [OK] Google DNS
* HTTP
=> [OK] Connectivity to kube-apiserver
=> [OK] Connectivity to google.com
* Kubernetes
=> [Fail] Kubelet liveness
* Apps
=> [Fail] Pods Crashloopbackoff

kdebug has detected these problems for you:

----------
Checker: In-cluster CoreDNS
Error: Time-out
Description: In-cluster CoreDNS query failed. Check if CoreDNS pods are running.
Recommendations:
Check CoreDNS pods using command ` kubectl get pods -o wide -n kube-system | grep coredns`
Help links:
https://example.com

----------
Checker: Kubelet
Error: systemd service kubelet is not running
Description: Systemd service kubelet is not running. It has crashed 300 times in last 1h.
Logs:
[I] xxx
[I] yyy
[F] cgroup is invalid.
...
Recommendations:
Use `systemctl status kubelet` to check its status.
Use `journactl -r -u kubelet` to see full logs.
Reboot machine.
Help links:
https://foo.com
https://bar.com

----------
Checker: App
Error: Pod default/xxx is in Crashloopbackoff state
Description: Pod is crashing. Last exit reason is OOM
Recommendations:
Increase pod memory limit. Current is 100MB.
Check potential memory leak in your app.
Help links:
https://foo.com
https://bar.com
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza revisando la experiencia de usuario propuesta para la CLI, especialmente el subcomando `check` y sus conjuntos de comprobaciones de DNS, HTTP, Kubernetes y app. En el issue no se han identificado archivos, pruebas ni puntos de entrada. La tarea estaría terminada cuando haya un alcance definido y una herramienta de diagnóstico implementada que genere los informes de estado saludable y no saludable descritos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
go, kubernetes
Área
cli, devops
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.