Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Install and Set Up kubectl on Linux
리눅스에 kubectl 설치 및 설정
시작하기 전에
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.28 클라이언트는 v1.27, v1.28, v1.29의 컨트롤 플레인과 연동될 수 있다. 호환되는 최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
리눅스에 kubectl 설치
다음과 같은 방법으로 리눅스에 kubectl을 설치할 수 있다.
리눅스에서 curl을 사용하여 kubectl 바이너리 설치
-
다음 명령으로 최신 릴리스를 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
참고:특정 버전을 다운로드하려면,
$(curl -L -s https://dl.k8s.io/release/stable.txt)
명령 부분을 특정 버전으로 바꾼다.예를 들어, 리눅스에서 버전 1.28.4을 다운로드하려면, 다음을 입력한다.
curl -LO https://dl.k8s.io/release/v1.28.4/bin/linux/amd64/kubectl
-
바이너리를 검증한다. (선택 사항)
kubectl 체크섬(checksum) 파일을 다운로드한다.
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
kubectl 바이너리를 체크섬 파일을 통해 검증한다.
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
검증이 성공한다면, 출력은 다음과 같다.
kubectl: OK
검증이 실패한다면,
shasum
이 0이 아닌 상태로 종료되며 다음과 유사한 결과를 출력한다.kubectl: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
참고: 동일한 버전의 바이너리와 체크섬을 다운로드한다. -
kubectl 설치
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
참고:대상 시스템에 root 접근 권한을 가지고 있지 않더라도,
~/.local/bin
디렉터리에 kubectl을 설치할 수 있다.chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl # 그리고 ~/.local/bin 을 $PATH의 앞부분 또는 뒷부분에 추가
-
설치한 버전이 최신인지 확인한다.
kubectl version --client
또는 다음을 실행하여 버전에 대한 더 자세한 정보를 본다.
kubectl version --client --output=yaml
기본 패키지 관리 도구를 사용하여 설치
-
apt
패키지 색인을 업데이트하고 쿠버네티스apt
리포지터리를 사용하는 데 필요한 패키지들을 설치한다.sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
Debian 9(stretch) 또는 그 이전 버전을 사용하는 경우
apt-transport-https
도 설치해야 한다.sudo apt-get install -y apt-transport-https
-
구글 클라우드 공개 사이닝 키를 다운로드한다.
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
-
쿠버네티스
apt
리포지터리를 추가한다.echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
-
새 리포지터리의
apt
패키지 색인을 업데이트하고 kubectl을 설치한다.sudo apt-get update sudo apt-get install -y kubectl
/etc/apt/keyrings
파일이 존재하지 않는다.
필요할 경우, 읽기 권한은 모두에게 부여되지만 쓰기 권한은 관리자만 갖도록 해당 디렉토리를 생성한다.
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl
다른 패키지 관리 도구를 사용하여 설치
kubectl 구성 확인
kubectl이 쿠버네티스 클러스터를 찾아 접근하려면,
kube-up.sh를
사용하여 클러스터를 생성하거나 Minikube 클러스터를 성공적으로 배포할 때 자동으로 생성되는
kubeconfig 파일이
필요하다.
기본적으로, 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
선택적 kubectl 구성 및 플러그인
셸 자동 완성 활성화
kubectl은 Bash, Zsh, Fish, 및 PowerShell에 대한 자동 완성 지원을 제공하므로 입력을 위한 타이핑을 많이 절약할 수 있다.
다음은 Bash, Fish, 및 Zsh에 대한 자동 완성을 설정하는 절차이다.
소개
Bash의 kubectl 자동 완성 스크립트는 kubectl completion bash
명령으로 생성할 수 있다. 셸에서 자동 완성 스크립트를 소싱(sourcing)하면 kubectl 자동 완성 기능이 활성화된다.
그러나, 자동 완성 스크립트는 bash-completion에 의존하고 있으며, 이 소프트웨어를 먼저 설치해야 한다(type _init_completion
을 실행하여 bash-completion이 이미 설치되어 있는지 확인할 수 있음).
bash-completion 설치
bash-completion은 많은 패키지 관리자에 의해 제공된다(여기 참고). apt-get install bash-completion
또는 yum install bash-completion
등으로 설치할 수 있다.
위의 명령은 bash-completion의 기본 스크립트인 /usr/share/bash-completion/bash_completion
을 생성한다. 패키지 관리자에 따라, ~/.bashrc
파일에서 이 파일을 수동으로 소스(source)해야 한다.
확인하려면, 셸을 다시 로드하고 type _init_completion
을 실행한다. 명령이 성공하면, 이미 설정된 상태이고, 그렇지 않으면 ~/.bashrc
파일에 다음을 추가한다.
source /usr/share/bash-completion/bash_completion
셸을 다시 로드하고 type _init_completion
을 입력하여 bash-completion이 올바르게 설치되었는지 확인한다.
kubectl 자동 완성 활성화
Bash
이제 kubectl 자동 완성 스크립트가 모든 셸 세션에서 제공되도록 해야 한다. 이를 수행할 수 있는 두 가지 방법이 있다.
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
kubectl에 대한 앨리어스(alias)가 있는 경우, 해당 앨리어스로 작업하도록 셸 자동 완성을 확장할 수 있다.
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
/etc/bash_completion.d
에 있는 모든 자동 완성 스크립트를 소싱한다.
두 방법 모두 동일하다. 셸을 다시 로드하면, kubectl 자동 완성 기능이 작동할 것이다.
셸의 현재 세션에서 bash 자동 완성을 활성화하려면 exec bash
를 실행한다.
exec bash
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
kubectl convert
플러그인 설치
이것은 쿠버네티스 커맨드 라인 도구인 kubectl
의 플러그인으로서, 특정 버전의 쿠버네티스 API로 작성된 매니페스트를 다른 버전으로
변환할 수 있도록 한다. 이것은 매니페스트를 최신 쿠버네티스 릴리스의 사용 중단되지 않은 API로 마이그레이션하는 데 특히 유용하다.
더 많은 정보는 다음의 사용 중단되지 않은 API로 마이그레이션을 참고한다.
-
다음 명령으로 최신 릴리스를 다운로드한다.
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"
-
바이너리를 검증한다. (선택 사항)
kubectl-convert 체크섬(checksum) 파일을 다운로드한다.
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
kubectl-convert 바이너리를 체크섬 파일을 통해 검증한다.
echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
검증이 성공한다면, 출력은 다음과 같다.
kubectl-convert: OK
검증이 실패한다면,
sha256
이 0이 아닌 상태로 종료되며 다음과 유사한 결과를 출력한다.kubectl-convert: FAILED sha256sum: WARNING: 1 computed checksum did NOT match
참고: 동일한 버전의 바이너리와 체크섬을 다운로드한다. -
kubectl-convert 설치
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
-
플러그인이 정상적으로 설치되었는지 확인한다.
kubectl convert --help
에러가 출력되지 않는다면, 플러그인이 정상적으로 설치된 것이다.
다음 내용
- Minikube 설치
- 클러스터 생성에 대한 자세한 내용은 시작하기를 참고한다.
- 애플리케이션을 시작하고 노출하는 방법에 대해 배운다.
- 직접 생성하지 않은 클러스터에 접근해야 하는 경우, 클러스터 접근 공유 문서를 참고한다.
- kubectl 레퍼런스 문서 읽기