쿠버네티스 커맨드 라인 도구인 kubectl을 사용하면
쿠버네티스 클러스터에 대해 명령을 실행할 수 있다.
kubectl 을 사용하여 애플리케이션을 배포하고, 클러스터 리소스를 검사 및 관리하고,
로그를 볼 수 있다. kubectl 전체 명령어를 포함한 추가 정보는
kubectl 레퍼런스 문서에서 확인할 수 있다.
kubectl 은 다양한 리눅스 플랫폼, macOS, 그리고 윈도우에 설치할 수 있다.
각각에 대한 설치 가이드는 다음과 같다.
kind 와 마찬가지로, minikube는 쿠버네티스를 로컬에서 실행할 수 있는
도구이다. minikube 는 개인용 컴퓨터(윈도우, macOS 및 리눅스 PC 포함)에서 올인원 방식 또는
복수 개의 노드로 쿠버네티스 클러스터를 실행하여, 쿠버네티스를 사용해보거나 일상적인 개발 작업을
수행할 수 있다.
도구 설치에 중점을 두고 있다면 공식 사이트에서의
시작하기!
가이드를 따라 해볼 수 있다.
클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.37 클라이언트는 v1.36, v1.37, v1.38의 컨트롤 플레인과 연동될 수 있다.
호환되는 최신 버전의 kubectl을 사용하면 예기치 않은 문제를 피할 수 있다.
macOS에서 Homebrew 패키지 관리자를 사용하는 경우, Homebrew로 kubectl을 설치할 수 있다.
설치 명령을 실행한다.
brew install kubectl
또는
brew install kubernetes-cli
설치한 버전이 최신 버전인지 확인한다.
kubectl version --client
macOS에서 Macports를 사용하여 설치
macOS에서 Macports 패키지 관리자를 사용하는 경우, Macports로 kubectl을 설치할 수 있다.
설치 명령을 실행한다.
sudo port selfupdate
sudo port install kubectl
설치한 버전이 최신 버전인지 확인한다.
kubectl version --client
kubectl 구성 확인
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
'No Auth Provider Found' 오류 메시지 문제 해결
쿠버네티스 1.26에서 다음 클라우드
제공자의 관리형 쿠버네티스 서비스에 대한 내장 인증을 제거했다. 각 제공자는
클라우드별 인증을 위한 kubectl 플러그인을 출시했다. 사용 방법은 다음 제공자 문서를 참고한다.
bash-completion에는 v1과 v2 두 가지 버전이 있다. v1은 Bash 3.2(macOS의 기본 설치 버전) 버전용이고, v2는 Bash 4.1 이상 버전용이다. kubectl 자동 완성 스크립트는 bash-completion v1과 Bash 3.2 버전에서는 작동하지 않는다. bash-completion v2 와 Bash 4.1 이상 버전 이 필요하다. 따라서, macOS에서 kubectl 자동 완성 기능을 올바르게 사용하려면, Bash 4.1 이상을 설치하고 사용해야 한다(지침). 다음의 내용에서는 Bash 4.1 이상(즉, 모든 Bash 버전 4.1 이상)을 사용한다고 가정한다.
Bash 업그레이드
여기의 지침에서는 Bash 4.1 이상을 사용한다고 가정한다. 다음을 실행하여 Bash 버전을 확인할 수 있다.
echo$BASH_VERSION
너무 오래된 버전인 경우, Homebrew를 사용하여 설치/업그레이드할 수 있다.
brew install bash
셸을 다시 로드하고 원하는 버전을 사용 중인지 확인한다.
echo$BASH_VERSION$SHELL
Homebrew는 보통 /usr/local/bin/bash 에 설치한다.
bash-completion 설치
참고:
언급한 바와 같이, 이 지침에서는 Bash 4.1 이상을 사용한다고 가정한다. 이는 bash-completion v2를 설치한다는 것을 의미한다(Bash 3.2 및 bash-completion v1의 경우, kubectl 자동 완성이 작동하지 않음).
bash-completion v2가 이미 설치되어 있는지 type_init_completion 으로 확인할 수 있다. 그렇지 않은 경우, Homebrew로 설치할 수 있다.
brew install bash-completion@2
이 명령의 출력에 명시된 바와 같이, ~/.bash_profile 파일에 다음을 추가한다.
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 v2의 Homebrew 설치는 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
kubectl convert 플러그인 설치
이것은 쿠버네티스 커맨드 라인 도구인 kubectl의 플러그인으로서, 특정 버전의 쿠버네티스 API로 작성된 매니페스트를 다른 버전으로
변환할 수 있도록 한다. 이것은 매니페스트를 최신 쿠버네티스 릴리스의 사용 중단되지 않은 API로 마이그레이션하는 데 특히 유용하다.
더 많은 정보는 다음의 사용 중단되지 않은 API로 마이그레이션을 참고한다.
클러스터와 마이너 버전 차이가 1 이내인 kubectl 버전을 사용해야 한다.
예를 들어, v1.37 클라이언트는
v1.36, v1.37,
그리고 v1.38 컨트롤 플레인과 통신할 수 있다.
호환되는 최신 버전의 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
# apt-transport-https는 더미 패키지일 수 있다. 이 경우, 해당 패키지는 생략할 수 있다.sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
쿠버네티스 패키지 리포지터리용 공개 서명 키를 다운로드한다. 동일한 서명 키는 모든 리포지터리에 사용되므로 URL에 있는 버전은 무시해도 된다.
# `/etc/apt/keyrings` 디렉터리가 없다면 curl 명령을 실행하기 전에 생성해야 한다. 아래 참고를 확인한다.# sudo mkdir -p -m 755 /etc/apt/keyringscurl -fsSL https://pkgs.k8s.io/core:/stable:/v1.37/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 특권이 없는 APT 프로그램이 이 키링을 읽을 수 있도록 한다.
참고:
데비안 12 및 우분투 22.04 이전 릴리스에서는 /etc/apt/keyrings 디렉터리가 기본적으로 존재하지 않으므로 curl 명령을 실행하기 전에 생성해야 한다.
쿠버네티스 apt 리포지터리를 추가한다. v1.37과 다른 쿠버네티스 버전을 사용하려면
아래 명령에서 v1.37을 원하는 마이너 버전으로 바꾼다.
# /etc/apt/sources.list.d/kubernetes.list의 기존 설정을 모두 덮어쓴다.echo'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.37/deb/ /'| sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # command-not-found 같은 도구가 올바르게 작동하도록 한다.
참고:
다른 마이너 릴리스의 kubectl로 업그레이드하려면 apt-get update와 apt-get upgrade를 실행하기 전에 /etc/apt/sources.list.d/kubernetes.list의 버전을 올려야 한다. 이 절차에 대한 자세한 내용은 쿠버네티스 패키지 리포지터리 변경하기에서 확인할 수 있다.
쿠버네티스 yum 리포지터리를 추가한다. 쿠버네티스 버전이
v1.37과 다르다면 아래 명령의 v1.37을
원하는 마이너 버전으로 바꾼다.
# /etc/yum.repos.d/kubernetes.repo의 기존 설정을 모두 덮어쓴다.cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.37/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.37/rpm/repodata/repomd.xml.key
EOF
참고:
다른 마이너 릴리스의 kubectl로 업그레이드하려면 dnf update를 실행하기 전에 /etc/yum.repos.d/kubernetes.repo의 버전을 올려야 한다. 이 절차에 대한 자세한 내용은 쿠버네티스 패키지 리포지터리 변경하기에서 확인할 수 있다.
dnf를 사용하여 kubectl을 설치한다.
sudo dnf install -y kubectl
쿠버네티스 zypper 리포지터리를 추가한다. 쿠버네티스 버전이
v1.37과 다르다면 아래 명령의 v1.37을
원하는 마이너 버전으로 바꾼다.
# /etc/zypp/repos.d/kubernetes.repo의 기존 설정을 모두 덮어쓴다.cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.37/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.37/rpm/repodata/repomd.xml.key
EOF
참고:
다른 마이너 릴리스의 kubectl로 업그레이드하려면 /etc/zypp/repos.d/kubernetes.repo의 버전을 올린 뒤
zypper update를 실행해야 한다. 이 절차에 대한 자세한 내용은
쿠버네티스 패키지 리포지터리 변경하기에서 확인할 수 있다.
zypper를 업데이트하고 새 리포지터리 추가를 확인한다.
sudo zypper update
다음 메시지가 나타나면 't' 또는 'a'를 누른다.
New repository or package signing key received:
Repository: Kubernetes
Key Fingerprint: 1111 2222 3333 4444 5555 6666 7777 8888 9999 AAAA
Key Name: isv:kubernetes OBS Project <isv:kubernetes@build.opensuse.org>
Key Algorithm: RSA 2048
Key Created: Thu 25 Aug 2022 01:21:11 PM -03
Key Expires: Sat 02 Nov 2024 01:21:11 PM -03 (expires in 85 days)
Rpm Name: gpg-pubkey-9a296436-6307a177
Note: Signing data enables the recipient to verify that no modifications occurred after the data
were signed. Accepting data with no, wrong or unknown signature can lead to a corrupted system
and in extreme cases even to a system compromise.
Note: A GPG pubkey is clearly identified by its fingerprint. Do not rely on the key's name. If
you are not sure whether the presented key is authentic, ask the repository provider or check
their web site. Many providers maintain a web page showing the fingerprints of the GPG keys they
are using.
Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
zypper를 사용하여 kubectl을 설치한다.
sudo zypper install -y kubectl
다른 패키지 관리 도구를 사용하여 설치
우분투 또는 다른 리눅스 배포판에서
snap 패키지 관리자를 지원한다면 kubectl을
snap 애플리케이션으로 설치할 수 있다.
snap install kubectl --classic
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
'No Auth Provider Found' 오류 메시지 문제 해결
쿠버네티스 1.26에서 다음 클라우드
제공자의 관리형 쿠버네티스 서비스에 대한 내장 인증을 제거했다. 각 제공자는
클라우드별 인증을 위한 kubectl 플러그인을 출시했다. 사용 방법은 다음 제공자 문서를 참고한다.
이것은 쿠버네티스 커맨드 라인 도구인 kubectl의 플러그인으로서, 특정 버전의 쿠버네티스 API로 작성된 매니페스트를 다른 버전으로
변환할 수 있도록 한다. 이것은 매니페스트를 최신 쿠버네티스 릴리스의 사용 중단되지 않은 API로 마이그레이션하는 데 특히 유용하다.
더 많은 정보는 다음의 사용 중단되지 않은 API로 마이그레이션을 참고한다.
클러스터와 마이너 버전 차이가 1 이내인 kubectl 버전을 사용해야 한다.
예를 들어, v1.37 클라이언트는
v1.36, v1.37 및
v1.38 컨트롤 플레인과 통신할 수 있다.
호환되는 최신 kubectl 버전을 사용하면 예기치 않은 문제를 방지하는 데 도움이 된다.
윈도우용 도커 데스크톱은
자체 kubectl 버전을 PATH에 추가한다. 도커 데스크톱을 이미 설치했다면
도커 데스크톱 설치 프로그램이 추가한 경로보다 앞에 사용하려는 PATH 항목을 배치하거나
도커 데스크톱의 kubectl을 제거해야 할 수도 있다.
Chocolatey, Scoop 또는 winget을 사용하여 윈도우에 설치
윈도우에 kubectl을 설치할 때 Chocolatey
패키지 관리자, Scoop 커맨드라인 설치 도구 또는
winget 패키지 관리자를 사용할 수 있다.
chocoinstallkubernetes-cli
scoopinstallkubectl
wingetinstall-e--idKubernetes.kubectl
설치한 버전이 최신인지 확인한다.
kubectlversion--client
홈 디렉터리로 이동한다.
# cmd.exe에서는 cd %USERPROFILE% 명령을 실행한다.cd ~
.kube 디렉터리를 만든다.
mkdir.kube
방금 만든 .kube 디렉터리로 이동한다.
cd .kube
원격 쿠버네티스 클러스터를 사용하도록 kubectl을 구성한다.
New-Itemconfig-typefile
참고:
메모장 등 원하는 텍스트 편집기로 구성 파일을 편집한다.
kubectl 구성 확인
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
'No Auth Provider Found' 오류 메시지 문제 해결
쿠버네티스 1.26에서 다음 클라우드
제공자의 관리형 쿠버네티스 서비스에 대한 내장 인증을 제거했다. 각 제공자는
클라우드별 인증을 위한 kubectl 플러그인을 출시했다. 사용 방법은 다음 제공자 문서를 참고한다.
이것은 쿠버네티스 커맨드 라인 도구인 kubectl의 플러그인으로서, 특정 버전의 쿠버네티스 API로 작성된 매니페스트를 다른 버전으로
변환할 수 있도록 한다. 이것은 매니페스트를 최신 쿠버네티스 릴리스의 사용 중단되지 않은 API로 마이그레이션하는 데 특히 유용하다.
더 많은 정보는 다음의 사용 중단되지 않은 API로 마이그레이션을 참고한다.