# Awesome K8s Using Bash

stop suffering when using kubectl

## Introduction

Efficient Kubernetes management often entails repetitive kubectl commands. To streamline this, I've developed a set of Bash functions, collectively accessible via a [gist](https://gist.github.com/NahumLitvin/e8e67bb33a0fc0f8f61b28c64303aea1).

All those functions will find a pod by partial name: *partial_pod_name* and run common k8s commands on the found pod.

we effectively scan through the pods in the current namespace and retrieves the name of the first pod that matches a given partial string. Those functions becomes particularly handy when dealing with dynamically generated pod names, where you typically know the deployment name but not the unique identifier of each pod.

## The Functions and Their Usage

```bash
podNameSeeker [partial_pod_name] # find pod by partial name
shpod [partial_pod_name] # Access a pod (by partial name) using /bin/sh
bashpod [partial_pod_name] # Access a pod (by partial name) using /bin/bash
commandpod [partial_pod_name] [command] # Execute a command inside a pod (by partial name).
logpod [partial_pod_name] # Fetch logs from a pod (by partial name).
debugbashpod <partial_pod_name> #attach netshoot debug container to pod and bash into it"
debugcommandpod <partial_pod_name> <command> # attach netshoot debug container to pod and run command in it
```

## The Debug Functions

[netshoot](https://github.com/nicolaka/netshoot) is an awesome project , a container with all the network tools you will ever need. iperf , nc, curl, wget and more. you can use kubectl debug to attach and ephemeral container with it to your pod to debug it see [Debugging with an ephemeral debug container](https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/#ephemeral-container)

think about a container named "bob" trying to access "myserver.address.com" on port "myport" and falining but you have no networking tools installed on the pod

```bash
debugcommandpod bob nc -vz myserver.address.com myport
```

will attach netshoot to the bob container and run NC to myserver.address.com and check if myport is open

## The Code[https://medium.com/media/9dd483e9b2a7fb251de1a40bc598d401/href](https://medium.com/media/9dd483e9b2a7fb251de1a40bc598d401/href)

## Integrating into Your Shell

To add these functions to your shell environment, you can run the following command in your terminal:

```bash
curl -sL https://gist.githubusercontent.com/NahumLitvin/e8e67bb33a0fc0f8f61b28c64303aea1/raw/d35e95e1c408c382739258dd7048bb866277946e/podseeker.sh > ~/podseeker.sh && \
echo '[ -f ~/podseeker.sh ] && source ~/podseeker.sh' >> ~/.${SHELL:t}rc && \
source ~/.${SHELL:t}rc
```

This one-liner will append the functions to your .bashrc or .zshrc and reload the configuration.

**Conclusion**

These custom Bash functions are designed to make Kubernetes pod management more efficient and user-friendly. By incorporating them into your workflow, you can reduce time spent on routine commands and focus on more complex tasks.

![](https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=59a767d441e4)