클러스터와 마이너 버전 차이가 1 이내인 kubectl 버전을 사용해야 한다. 예를 들어, v1.37 클라이언트는 v1.36, v1.37 및 v1.38 컨트롤 플레인과 통신할 수 있다. 호환되는 최신 kubectl 버전을 사용하면 예기치 않은 문제를 방지하는 데 도움이 된다.
다음 방법으로 macOS에 kubectl을 설치할 수 있다.
최신 릴리스를 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
특정 버전을 다운로드하려면 명령에서 $(curl -L -s https://dl.k8s.io/release/stable.txt)
부분을 해당 버전으로 바꾼다.
예를 들어, Intel macOS에서 1.37.0 버전을 다운로드하려면 다음을 입력한다.
curl -LO "https://dl.k8s.io/release/v1.37.0/bin/darwin/amd64/kubectl"
Apple Silicon 기반 macOS에서는 다음을 입력한다.
curl -LO "https://dl.k8s.io/release/v1.37.0/bin/darwin/arm64/kubectl"
바이너리 검증(선택 사항)
kubectl 체크섬(checksum) 파일을 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
kubectl 바이너리를 체크섬 파일과 대조하여 검증한다.
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
검증에 성공하면 다음과 같이 출력된다.
kubectl: OK
검증에 실패하면 shasum이 0이 아닌 상태로 종료되며 다음과 유사한 결과를 출력한다.
kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match
kubectl 바이너리에 실행 권한을 부여한다.
chmod +x ./kubectl
kubectl 바이너리를 시스템 PATH에 포함된 디렉터리로 옮긴다.
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
/usr/local/bin이 PATH 환경 변수에 포함되어 있는지 확인한다.설치한 버전이 최신인지 확인한다.
kubectl version --client
또는 다음 명령으로 버전 정보를 자세히 확인한다.
kubectl version --client --output=yaml
kubectl을 설치하고 검증한 후 체크섬 파일을 삭제한다.
rm kubectl.sha256
macOS에서 Homebrew 패키지 관리자를 사용한다면 Homebrew로 kubectl을 설치할 수 있다.
설치 명령을 실행한다.
brew install kubectl
또는
brew install kubernetes-cli
설치한 버전이 최신인지 확인한다.
kubectl version --client
macOS에서 Macports 패키지 관리자를 사용한다면 Macports로 kubectl을 설치할 수 있다.
설치 명령을 실행한다.
sudo port selfupdate
sudo port install kubectl
설치한 버전이 최신인지 확인한다.
kubectl version --client
kubectl이 쿠버네티스 클러스터를 찾고 접근하려면
kubeconfig 파일이 필요하다.
이 파일은 클러스터를
kube-up.sh로 생성하거나
Minikube 클러스터를 성공적으로 배포하면 자동으로 생성된다.
기본적으로 kubectl 구성은 ~/.kube/config에 있다.
클러스터 상태를 조회하여 kubectl이 올바르게 구성되었는지 확인한다.
kubectl cluster-info
URL 응답이 나타나면 kubectl이 클러스터에 접근하도록 올바르게 구성된 것이다.
다음과 유사한 메시지가 나타나면 kubectl 구성이 올바르지 않거나 쿠버네티스 클러스터에 연결할 수 없는 것이다.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
예를 들어, 노트북(로컬)에서 쿠버네티스 클러스터를 실행하려면 먼저 Minikube와 같은 도구를 설치한 다음, 위에 언급된 명령어를 다시 실행해야 한다.
kubectl cluster-info가 URL 응답을 반환했지만 클러스터에 접근할 수 없다면
다음 명령으로 구성이 올바른지 확인한다.
kubectl cluster-info dump
쿠버네티스 1.26에서 다음 클라우드 제공자의 관리형 쿠버네티스 서비스에 대한 내장 인증을 제거했다. 각 제공자는 클라우드별 인증을 위한 kubectl 플러그인을 출시했다. 사용 방법은 다음 제공자 문서를 참고한다.
같은 오류 메시지가 표시되더라도 이 변경과 관련 없는 다른 원인이 있을 수 있다.
kubectl은 Bash, Zsh, Fish, PowerShell의 자동 완성을 지원하므로 입력량을 크게 줄일 수 있다.
다음은 Bash, Fish, Zsh에서 자동 완성을 설정하는 절차이다.
Bash의 kubectl 자동 완성 스크립트는 kubectl completion bash 로 생성할 수 있다. 이 스크립트를 셸에 소싱하면 kubectl 자동 완성이 가능하다.
그러나 kubectl 자동 완성 스크립트는 미리 bash-completion을 설치해야 동작한다.
여기의 지침에서는 Bash 4.1 이상을 사용한다고 가정한다. 다음을 실행하여 Bash 버전을 확인할 수 있다.
echo $BASH_VERSION
너무 오래된 버전인 경우, Homebrew를 사용하여 설치/업그레이드할 수 있다.
brew install bash
셸을 다시 로드하고 원하는 버전을 사용 중인지 확인한다.
echo $BASH_VERSION $SHELL
Homebrew는 보통 /usr/local/bin/bash 에 설치한다.
bash-completion v2가 이미 설치되어 있는지 type_init_completion 으로 확인할 수 있다. 그렇지 않은 경우, Homebrew로 설치할 수 있다.
brew install bash-completion@2
이 명령의 출력에 명시된 바와 같이, ~/.bash_profile 파일에 다음을 추가한다.
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
셸을 다시 로드하고 bash-completion v2가 올바르게 설치되었는지 type _init_completion 으로 확인한다.
이제 kubectl 자동 완성 스크립트가 모든 셸 세션에서 제공되도록 해야 한다. 이를 수행하는 방법에는 여러 가지가 있다.
자동 완성 스크립트를 ~/.bash_profile 파일에서 소싱한다.
echo 'source <(kubectl completion bash)' >>~/.bash_profile
자동 완성 스크립트를 /usr/local/etc/bash_completion.d 디렉터리에 추가한다.
kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
kubectl에 대한 앨리어스가 있는 경우, 해당 앨리어스로 작업하기 위해 셸 자동 완성을 확장할 수 있다.
echo 'alias k=kubectl' >>~/.bash_profile
echo 'complete -o default -F __start_kubectl k' >>~/.bash_profile
Homebrew로 kubectl을 설치한 경우(여기의 설명을 참고), kubectl 자동 완성 스크립트가 이미 /usr/local/etc/bash_completion.d/kubectl 에 있을 것이다. 이 경우, 아무 것도 할 필요가 없다.
BASH_COMPLETION_COMPAT_DIR 디렉터리의 모든 파일을 소싱하므로, 후자의 두 가지 방법이 적용된다.어떤 경우든, 셸을 다시 로드하면, kubectl 자동 완성 기능이 작동할 것이다.
Fish용 kubectl 자동 완성 스크립트는 kubectl completion fish 명령으로 생성할 수 있다. 셸에서 자동 완성 스크립트를 소싱하면 kubectl 자동 완성 기능이 활성화된다.
모든 셸 세션에서 사용하려면, ~/.config/fish/config.fish 파일에 다음을 추가한다.
kubectl completion fish | source
셸을 다시 로드하면, kubectl 자동 완성 기능이 작동할 것이다.
Zsh용 kubectl 자동 완성 스크립트는 kubectl completion zsh 명령으로 생성할 수 있다. 셸에서 자동 완성 스크립트를 소싱하면 kubectl 자동 완성 기능이 활성화된다.
모든 셸 세션에서 사용하려면, ~/.zshrc 파일에 다음을 추가한다.
source <(kubectl completion zsh)
kubectl에 대한 앨리어스가 있는 경우, kubectl 자동완성이 자동으로 동작할 것이다.
셸을 다시 로드하면, kubectl 자동 완성 기능이 작동할 것이다.
2: command not found: compdef 와 같은 오류가 발생하면, ~/.zshrc 파일의 시작 부분에 다음을 추가한다.
autoload -Uz compinit
compinit
자세한 내용은 kuberc를 참고한다.
kubectl convert 플러그인 설치이것은 쿠버네티스 커맨드 라인 도구인 kubectl의 플러그인으로서, 특정 버전의 쿠버네티스 API로 작성된 매니페스트를 다른 버전으로
변환할 수 있도록 한다. 이것은 매니페스트를 최신 쿠버네티스 릴리스의 사용 중단되지 않은 API로 마이그레이션하는 데 특히 유용하다.
더 많은 정보는 다음의 사용 중단되지 않은 API로 마이그레이션을 참고한다.
다음 명령으로 최신 릴리스를 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
바이너리 검증(선택 사항)
kubectl-convert 체크섬 파일을 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"
kubectl-convert 바이너리를 체크섬 파일과 대조하여 검증한다.
echo "$(cat kubectl-convert.sha256) kubectl-convert" | shasum -a 256 --check
검증에 성공하면 다음과 같이 출력된다.
kubectl-convert: OK
검증에 실패하면 shasum이 0이 아닌 상태로 종료되며 다음과 유사한 결과를 출력한다.
kubectl-convert: FAILED
shasum: WARNING: 1 computed checksum did NOT match
kubectl-convert 바이너리에 실행 권한을 부여한다.
chmod +x ./kubectl-convert
kubectl-convert 바이너리를 시스템 PATH에 포함된 디렉터리로 옮긴다.
sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
sudo chown root: /usr/local/bin/kubectl-convert
/usr/local/bin이 PATH 환경 변수에 포함되어 있는지 확인한다.플러그인이 정상적으로 설치됐는지 확인한다.
kubectl convert --help
오류가 표시되지 않으면 플러그인이 정상적으로 설치된 것이다.
플러그인을 설치한 후 설치 파일을 정리한다.
rm kubectl-convert kubectl-convert.sha256
kubectl 설치 방법에 따라 다음 방법 중 하나를 사용한다.
시스템에서 kubectl 바이너리의 위치를 확인한다.
which kubectl
kubectl 바이너리를 제거한다.
sudo rm <path>
<path>를 이전 단계에서 확인한 kubectl 바이너리 경로로 바꾼다. 예를 들어, sudo rm /usr/local/bin/kubectl을 실행한다.
Homebrew로 kubectl을 설치했다면 다음 명령을 실행한다.
brew remove kubectl