kubectl 은 kubernetes API 를 사용하여 kubernetes 클러스터의 control plane 과 통신을 지원하기 위한 CLI (명령줄도구) 입니다. kubernetes 를 사용하기 위해서는 kubectl 명령어 사용법을 익히는 것도 중요한 부분입니다. 이번 포스팅에서는 macOS 에 kubectl 을 설치하는 방법에 대해서 기술합니다.
참고로 포스팅을 작성하는 시점 kubernetes 최신 버전은 1.28.0 입니다.
kubectl 버전
kubectl 은 kubernetes API 를 통해서 상호 작용하기 때문에 kubernetes 의 버전과 연관이 있습니다. 기본적으로 kubernetes cluster 의 마이너 버전 차이가 1 이내에 kubectl 버전을 사용해야 합니다. 예를 들어 v1.28 을 사용하는 kubectl 은 v1.27, v1.28, v1.29 버전을 사용하는 kubernetes cluster 와 상호작용 할 수 있습니다.
kubectl binary 설치
kubectl 바이너리를 직접 다운로드 하여 설치하는 방법입니다.
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) 부분은 현재 kubernetes 의 stable 버전 정보를 출력합니다.
설치하고자 하는 kubectl 버전이 있다면 설치하고자 하는 버전을 직접 명시합니다.
$>curl -LO "https://dl.k8s.io/release/v1.28.0/bin/darwin/arm64/kubectl"
kubectl 검증
kubectl.sha256 파일을 다운로드 받은 후 kubectl.sha256 파일 내에 있는 해시 정보와 다운로드 받은 kubectl 파일의 해시 정보를 비교하여 검증합니다.
$>curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
혹은
$>curl -LO "https://dl.k8s.io/release/<설치하고자 하는 kubectl 버전>/bin/darwin/arm64/kubectl.sha256"
===================================================================================
검증1
$>shasum -a 256 kubectl
<sha256 hash>
$>cat kubectl.sha256
<sha256 hash>
위 두개의 출력값이 맞는지 비교
검증2
$>echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
kubectl: OK
$>shasum -a 256 kubectl
5d74042f5972b342a02636cf5969d4d73234f2d3afe84fe5ddaaa4baff79cdd8 kubectl
$>cat kubectl.sha256
5d74042f5972b342a02636cf5969d4d73234f2d3afe84fe5ddaaa4baff79cdd8
kubectl 권한 변경 및 PATH 등록
$>chmod 755 ./kubectl
$>sudo mv ./kubectl /usr/local/bin/kubectl
$>kubectl version --client
Client Version: v1.28.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
다운로드 받은 kubectl 파일에 실행권한을 추가 후에 /usr/local/bin 으로 이동합니다. /usr/local/bin 은 환경변수 PATH에 등록된 경로입니다. /usr/local/bin 이 아닌 환경변수 PATH 에 등록된 다른 경로로 이동시켜도 되지만 보통은 /usr/local/bin 에 위치합니다.
kubectl brew 설치
$>brew search kubernetes-cli
==> Formulae
kubernetes-cli ✔ kubernetes-cli@1.22
==> Casks
kubernetic
brew search 로 kubernetes-cli, kubernetes-cli@1.22 버전을 찾을 수 있습니다. 현 시점에 아래 링크의
https://github.com/Homebrew/homebrew-core/blob/master/Formula/k/kubernetes-cli.rb 파일을 보면 아래와 같이 기본 kubernetes-cli 는 v1.28.0 버전을 설치함을 알 수 있습니다.
아래 명령으로 kubectl 을 설치합니다.
$>brew install kubernetes-cli
$>where kubectl
/opt/homebrew/bin/kubectl
/usr/local/bin/kubectl
$>kubectl version --client
Client Version: v1.28.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
docker desktop 이 설치된 상태라면 [which kubectl] 명령으로 kubectl 파일 경로 확인시
lrwxr-xr-x 1 root wheel 55 3 31 11:48 /usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl
위와 같이 docker desktop 에 내장된 kubectl 을 참조하고 있을 수 있습니다. 이 경우에는 PATH 환경 변수에서 /usr/local/bin 경로 보다 /opt/homebrew/bin 경로를 앞으로 배치 하거나 /usr/local/bin/kubectl 의 심볼릭링크를 제거하는 것도 방법일 수 있을 것 같습니다.
kubectl auto completion (zsh)
zsh 환경에서 kubectl completion zsh 명령으로 kubectl 자동 완성 스크립트를 사용할 수 있습니다.
$>echo "source <(kubectl completion zsh)" >> ~/.zshrc
$>source ~/.zshrc
자동 완성 스크립트 이후 kubectl 옵션 <tab키> 입력시 사용가능한 옵션들이 자동으로 출력되어 선택할 수 있습니다.
bash 쉘에서 kubectl 자동완성 스크립트 사용하는 방법은 아래 링크를 참고하시기 바랍니다.
https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion
이 글을 읽으신 분께 도움이 되었기를 바랍니다.
'쿠버네티스' 카테고리의 다른 글
multipass를 이용하여 로컬 환경에 쿠버네티스 클러스터 구축하기 (0) | 2024.07.04 |
---|---|
macOS (silicon) minikube 설치하기 (0) | 2023.08.24 |
쿠버네티스 pod graceful shutdown (0) | 2023.08.06 |
port forward 명령으로 로컬에서 pod 접속하기 (0) | 2023.08.04 |
Release 상태의 PV 를 Available 상태로 변경하기 (0) | 2023.07.30 |
댓글