본문 바로가기

개발하자

Kubernetes에서 기본 네임스페이스를 설정할 수 있습니까?

반응형

Kubernetes에서 기본 네임스페이스를 설정할 수 있습니까?

기본 네임스페이스를 설정할 수 있습니까? 즉:

$ kubectl get pods -n NAMESPACE

이를 통해 특히 하루 중 대부분의 시간 동안 하나의 네임스페이스에 있을 때마다 입력할 필요가 없어집니다.




예, 네임스페이스를 다음과 같이 설정할 수 있습니다:

$ kubectl config set-context --current --namespace=NAMESPACE

또는 이 작업에 사용할 수 있습니다.




임시 리눅스 별칭을 사용할 수도 있습니다:

alias k='kubectl -n kube-system '

그럼 이렇게 써요

k get pods

그거야 ;)




나는 아래에 표시된 별칭을 사용하고 변수를 사용할 네임스페이스로 설정하곤 했다.

# Set N=-nNamespace  if N isn't set then no harm, no namespace will be used
alias k='kubectl $N'
alias kg='kubectl get $N'
alias ka='kubectl apply $N'
alias kl='kubectl logs $N'

네임스페이스로 전환하려면 다음을 사용합니다:

N=-nmy-apps

이후 명령:

kg pods

실제로 실행됩니다.

참고: bash 변수가 설정되지 않은 경우 명령은 기본적으로 kubectl과 같이 작동하고 실행됩니다.

변수의 네임스페이스 집합을 재정의하려면 다음과 같은 옵션을 추가하면 마지막으로 정의된 네임스페이스가 사용됩니다.

물론 더 영구적으로(현재 셸에서) 전환하려면 다음과 같이 변수를 설정합니다:

N=-nAnotherNamespace
kg pods

위의 작업을 수행하는 동안 ( , 와 함께 번들됨) 어떤 작업이 더 영구적으로 수행되는지 알게 되었습니다. 왜냐하면 파일이 현재 사용 중인 k8s 클러스터에 사용할 네임스페이스를 지정하는 줄로 업데이트되기 때문입니다(아래 예제의 dev)

contexts:
  - context:
        cluster: dev
        namespace: AnotherNamesapce  <<< THIS LINE IS ADDED by kubens
        user: user1
    name: dev
current-context: dev

하지만 다음을 사용하여 이미 쿠벡틀에 내장된 것이 전부입니다:

kubectl config set-context --current --namespace=AnotherNamespace

그래서 입력하기 더 쉬운 간단한 별칭도 잘 작동하기 때문에 (큐빅틀 집합 네임스페이스)를 선택했습니다.

function ksn(){
  kubectl config set-context --current --namespace=$@
}

이제 컨텍스트 전환을 위해 기본 제공되는 기능을 사용합니다. 네임스페이스로 전환하려면 다음을 사용합니다:

ksn AnotherNamespace

짜다! 가장 간단한 "내장" 솔루션입니다.

요약

사용자의 경우 다음을 파일에 추가합니다.

    function ksn(){
        if [ "$1" = "" ]
        then
            kubectl config view  -v6 2>&1 | grep 'Config loaded from file:' | sed -e 's/.*from file: /Config file:/'
            echo Current context: $(kubectl config current-context)
            echo Default namespace: $(kubectl config view --minify | grep namespace: | sed 's/.*namespace: *//')
        elif [ "$1" = "--unset" ]
        then
            kubectl config set-context --current --namespace=
        else
            kubectl config set-context --current --namespace=$1
        fi
    }

이렇게 하면 네임스페이스를 설정하거나, 네임스페이스가 무엇인지 확인하거나, 기본 네임스페이스를 제거할 수 있습니다( --unset 사용). 아래의 세 가지 명령을 참조하십시오:

# Set namespace
ksn AnotherNamespace

# Display the selected namespace
ksn
Config file: /home/user/.kube/config
Current context: dev
Default namespace: AnotherNamespace

# Unset/remove a default namespace
ksn --unset

현재 네임스페이스를 표시하는 명령은 다음을 참조하십시오:


반응형