Exploring Cluster Resources with Kubeview: A Visual Approach to Kubernetes Monitoring
Published: 2023-05-25 07:39:04

Managing and monitoring resources in a Kubernetes cluster can be a complex task, especially as your applications scale. To simplify this process and gain a comprehensive overview of your cluster, tools like Kubeview come to the rescue. Kubeview is a powerful open-source tool that provides a visual representation of your Kubernetes cluster, allowing you to explore resources and their relationships. In this blog post, we will delve into the features and benefits of Kubeview and guide you through its installation and usage.

## Understanding Kubeview


Kubeview is a Kubernetes cluster visualization tool that offers a graphical representation of your cluster's resources, including pods, deployments, services, and more. It provides a visual interface to explore and navigate through the various components of your cluster, helping you gain insights into resource allocation, dependencies, and performance.

## Using Helm

Assuming that you have already installed Git and Helm on your laptop, follow the below steps

```
git clone https://github.com/benc-uk/kubeview
cd kubeview/charts/
helm install kubeview kubeview
```

## Testing it locally

```
kubectl port-forward svc/kubeview -n default 80:80
```


![Image1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7pnn9grtbrue58khav.png)



## Using Kubectl

To start using Kubeview, you need to install it in your Kubernetes cluster. Follow these steps:

## Step 1: Deploy the Kubeview application

Kubeview can be deployed as a Kubernetes application using a YAML manifest file. Simply apply the manifest to your cluster using the following command:

```
kubectl apply -f https://raw.githubusercontent.com/benc-uk/kubeview/main/deploy/kubeview.yaml
```

## Step 2: Verify the installation:

After applying the manifest, check that Kubeview is up and running by executing the following command:

```
kubectl get pods -n kubeview
```

## Exploring Your Cluster with Kubeview

Once Kubeview is installed, you can access its web-based interface to explore your Kubernetes cluster visually. Here's how to get started:

## Step 1: Access the Kubeview dashboard

Retrieve the URL to access the Kubeview dashboard by executing the following command:

```
kubectl --namespace kubeview port-forward service/kubeview 8080:80
```

This command sets up a port forward to access Kubeview on your local machine.

## Step 2: Open the Kubeview dashboard

Open a web browser and visit http://localhost:8080 to access the Kubeview dashboard. You will be greeted with an intuitive interface that displays an overview of your cluster's resources.

## Step 3: Navigate through your cluster

Explore your cluster by clicking on different resources in the Kubeview interface. You can drill down into pods, deployments, services, and other components to visualize their relationships and connections. Kubeview provides clear visual representations, such as node graphs and dependency diagrams, to help you understand the structure of your cluster.

## Step 4: Analyze resource details

Clicking on individual resources reveals detailed information about them, including resource usage, health status, and labels. You can also view logs and events associated with each resource, allowing for efficient troubleshooting and monitoring.

## Leveraging Kubeview's Advanced Features

Kubeview offers additional advanced features that enhance your cluster exploration and monitoring experience. These include:

- Search and filter capabilities: Use Kubeview's search and filter functionalities to quickly locate specific resources or filter them based on labels, namespaces, or other criteria.

- Real-time updates: Kubeview automatically updates the visual representation of your cluster as changes occur, providing you with near real-time insights into the state of your resources.

- Support for multiple clusters: If you manage multiple Kubernetes clusters, Kubeview can handle them all. You can easily switch between clusters within the Kubeview interface.

## Visualizing K8s cluster using kubectl ai

## Using Kubernetes via AI

## Getting Started 

- Docker Desktop
- Install Kubectl-ai

```
brew tap sozercan/kubectl-ai https://github.com/sozercan/kubectl-ai
brew install kubectl-ai
```

- Get OpenAI Keys via https://platform.openai.com/account/api-keys

kubectl-ai requires an OpenAI API key or an Azure OpenAI Service API key and endpoint, and a valid Kubernetes configuration.

## Creating your first Nginx Pod

```
kubectl ai "create an nginx pod"
✨ Attempting to apply the following manifest:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
Use the arrow keys to navigate: ↓ ↑ → ← 
? Would you like to apply this? [Reprompt/Apply/Don't Apply]: 
+   Reprompt
  ▸ Apply
    Don't Apply
```

<img width="861" alt="image" src="https://github.com/collabnix/kubelabs/assets/313480/c32fc25c-23cd-4af6-bcca-c6d627695082">



## Deployment

Select "Reprompt" and type "make this into deployment"

```
Reprompt: make this into deployment
✨ Attempting to apply the following manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
 ```

## ReplicaSet

```
Reprompt: Scale to 3 replicas
```

```
Reprompt: Scale to 3 replicas
✨ Attempting to apply the following manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
  ```
  
 <img width="939" alt="image" src="https://github.com/collabnix/kubelabs/assets/313480/0e0602be-feed-42bb-93cd-bd11fd301b3c">


```
kubectl ai "Create Nginx Pod running on port 82 with 3 replicasets labeled web"
```

## Services 


```
kubectl ai "create a service for the nginx deployment with load balancer that uses nginx selector"
✨ Attempting to apply the following manifest:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer
✔ Apply

```

<img width="607" alt="image" src="https://github.com/collabnix/kubelabs/assets/313480/c58ef3f0-07a9-4294-83fa-24f2eeee38f5">

Here's the final view of the Kubeview:

<img width="1223" alt="image" src="https://github.com/collabnix/kubelabs/assets/313480/1ced621d-24d2-4ae1-83d8-98b0a75c3233">






## Conclusion

Kubeview revolutionizes the way you monitor and explore your Kubernetes clusters by providing a visually intuitive interface. With its powerful visualization capabilities, you can gain a deeper understanding of your cluster's resources, dependencies, and performance. By leveraging Kubeview's features, you can efficiently troubleshoot issues, optimize resource allocation, and make informed decisions for scaling and managing your applications. Install Kubeview today and unlock the power of visualizing your Kubernetes cluster like never before.