-
Notifications
You must be signed in to change notification settings - Fork 0
/
kubernates.bash
68 lines (56 loc) · 2.01 KB
/
kubernates.bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
UTILITY_NAMESPACE="utilities"
UTILITY_POD="utilbuntu"
# sets the current namespace, if no namespace is provided, it sets the namespace to default
ksetns() { kubectl config set-context --current --namespace "${1:-default}"; }
kenvs() { kubectl config get-contexts; }
ksetenv() { kubectl config use-context "${1:-kubernetes-admin@kubernetes}"; }
kget() { kubectl get $@; }
kdesc() { kubectl describe $@; }
kdel() { kubectl delete $@; }
klog() { kubectl logs -f --tail=50 $@; }
kbash() {
args="${1}"
if [ -n "$2" ]; then
args="${1} --container $2"
fi
kubectl exec -it $args -- /bin/bash;
if [ $? -gt 0 ]; then
echo "No bash shell found in the container, trying sh";
kubectl exec -it $args -- /bin/sh;
fi
}
kcurrentns() { kubectl config view --minify --output 'jsonpath={..namespace}'; };
kedit() { kubectl edit $@; }
kread() {
path=$(echo $3 | sed 's/\./\\\./g');
kubectl get $1 $2 -o jsonpath="{.data.$3}"
}
ktop() { kubectl top $@; }
kgetdnsrecord() {
#
# Get dns records for all services in the cluster
#
local current_ns=$(kcurrentns);
kget ns $UTILITY_NAMESPACE || kubectl create ns $UTILITY_NAMESPACE;
ksetns $UTILITY_NAMESPACE;
kubectl get pods | grep $UTILITY_POD || {
kubectl run $UTILITY_POD --image=ubuntu -- bash -c "while true; do echo hello; sleep 10; done";
kubectl wait --for=condition=Ready pod/$UTILITY_POD --timeout=120s
}
kubectl get svc -A|egrep -v 'CLUSTER-IP|None'|awk '{print $4}'|sort -V > /tmp/ips.txt;
kubectl cp /tmp/ips.txt ${UTILITY_POD}:/
kubectl exec -it $UTILITY_POD -- apt-get update;
kubectl exec -it $UTILITY_POD -- apt install -y dnsutils;
echo "===== DNS records ====="
for ip in $(cat /tmp/ips.txt); do
echo -n "$ip ";
kubectl exec -it $UTILITY_POD -- dig -x $ip +short;
done
echo "======================="
rm /tmp/ips.txt;
ksetns $current_ns;
}
kremoveutilpod() {
# removes utility pod
kdel pod $UTILITY_POD -n $UTILITY_NAMESPACE;
}