Kubernetes를 실행할 때 도움이 될 수 있는 몇 가지 별칭을 만들었습니다.
별칭 뒤에 포드 이름의 일부를 입력하면 포드를 찾고 명령을 실행합니다.
일치하는 포드가 여러 개인 경우 후보 목록이 반환됩니다.
사용
케섹티
컨테이너 내에서 명령을 실행합니다.
host> $ kexecti my-pod ls -l
total 4
-rw-r--r-- 1 root root 82 Feb 23 10:32 README.md
kexecsh
Bash를 사용하여 컨테이너에 연결합니다.
host> $ kexecsh my-pod
pod> $
노크
컨테이너 로그를 따릅니다.
host> $ klogf my-pod
사용
.bash_profile 포함
source .kubeutil
코드 검토
_KUBECTL=/usr/local/bin/kubectl
_kube_get_pod_name() {
_podname=""
_namespace=""
local num=`$_KUBECTL get pods -A --no-headers -o custom-columns=":metadata.name" | grep $1 | wc -l`
if ( $num -eq 1 )
_podname=`$_KUBECTL get pods -A --no-headers -o custom-columns=":metadata.name" | grep $1`
_namespace=`$_KUBECTL get pods -A --no-headers -o custom-columns=":metadata.namespace" --field-selector metadata.name=$_podname`
elif ( $num -eq 0 ); then
echo "not found podname ($1)"
else
echo "multiple pods named ($1)"
$_KUBECTL get pods -A --no-headers -o custom-columns=":metadata.name" | grep $1
fi
}
_kube_exec_ti() {
_kube_get_pod_name $1
if ( "$_podname" !
= "" ); then
$_KUBECTL exec -ti -n $_namespace $_podname -- ${*: 2:99}
fi
}
_kube_exec_sh() {
_kube_get_pod_name $1
if ( "$_podname" !
= "" ); then
$_KUBECTL exec -ti -n $_namespace $_podname -- bash --login
fi
}
_kube_exec_logf() {
_kube_get_pod_name $1
if ( "$_podname" !
= "" ); then
$_KUBECTL logs -f -n $_namespace $_podname
fi
}
alias kexecti=_kube_exec_ti
alias kexecsh=_kube_exec_sh
alias klogf=_kube_exec_logf
심판
최종 코드는 github에 있습니다.