Skip to content

Instantly share code, notes, and snippets.

@J-Swift
Created December 4, 2018 19:02
Show Gist options
  • Save J-Swift/3a1a6bf3dc8cd4882d4cdb9cae67c998 to your computer and use it in GitHub Desktop.
Save J-Swift/3a1a6bf3dc8cd4882d4cdb9cae67c998 to your computer and use it in GitHub Desktop.
Show aks pods by node
#!/usr/bin/env bash
set -euo pipefail
readonly temp_dir=$( mktemp -d )
# sudo kubectl get pods
# NAME READY STATUS RESTARTS AGE
# azure-vote-back-655476c7f7-gvg7b 1/1 Running 0 24m
# azure-vote-front-7f98fd48d4-8fkcd 1/1 Running 0 18m
# azure-vote-front-7f98fd48d4-l2848 1/1 Running 0 13m
# azure-vote-front-7f98fd48d4-xzd7c 1/1 Running 0 13m
is_valid_pod() {
local -r pod_name=$1
local -r filename="${temp_dir}/pods.txt"
if [ ! -f "${filename}" ]; then
touch "${filename}"
sudo kubectl get pods | tail -n +2 > "${filename}"
fi
grep "${pod_name}" "${filename}" > /dev/null
}
# sudo kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces
# NAME STATUS NODE
# azure-vote-back-655476c7f7-gvg7b Running aks-nodepool1-30647309-3
# azure-vote-front-7f98fd48d4-8fkcd Running aks-nodepool1-30647309-0
# azure-vote-front-7f98fd48d4-l2848 Running aks-nodepool1-30647309-3
# azure-vote-front-7f98fd48d4-xzd7c Running aks-nodepool1-30647309-1
# heapster-7866db774d-wqlmx Running aks-nodepool1-30647309-0
# kube-dns-v20-b8ff799f7-274tl Running aks-nodepool1-30647309-0
# kube-dns-v20-b8ff799f7-ws8jd Running aks-nodepool1-30647309-3
# kube-proxy-j4975 Running aks-nodepool1-30647309-1
# kube-proxy-qk9dl Running aks-nodepool1-30647309-3
# kube-proxy-rzj9c Running aks-nodepool1-30647309-0
# kube-svc-redirect-b26ck Running aks-nodepool1-30647309-3
# kube-svc-redirect-p75np Running aks-nodepool1-30647309-1
# kube-svc-redirect-s24d7 Running aks-nodepool1-30647309-0
# kubernetes-dashboard-cb6558ddb-2l5wg Running aks-nodepool1-30647309-3
# metrics-server-d576554d8-78x26 Running aks-nodepool1-30647309-1
# tunnelfront-67fb9d698b-wrhzl Running aks-nodepool1-30647309-3
print_pods() {
local -r node_name=$1
local -r filename="${temp_dir}/pods_full.txt"
if [ ! -f "${filename}" ]; then
touch "${filename}"
sudo kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces | tail -n +2 > "${filename}"
fi
for pod_name in $( grep "${node_name}" "${filename}" | awk '{print $1;}' ); do
if is_valid_pod "${pod_name}"; then
echo " ${pod_name}"
fi
done
}
# sudo kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# aks-nodepool1-30647309-0 Ready agent 20m v1.10.9
# aks-nodepool1-30647309-1 Ready agent 14m v1.10.9
# aks-nodepool1-30647309-3 Ready agent 26m v1.10.9
print_nodes() {
local -r filename="${temp_dir}/nodes.txt"
if [ ! -f "${filename}" ]; then
touch "${filename}"
sudo kubectl get nodes | tail -n +2 > "${filename}"
fi
for node in $( cat "${filename}" | awk '{print $1;}' ); do
echo "[${node}]"
print_pods "${node}"
echo
done
}
main() {
print_nodes
rm -rf "${temp_dir}"
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment