kubernetes 운영에 도움을 줄

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에 있습니다.

https://github.com/lmk/kubeutil