Linux에 kubectl 설치하기

Linux에 kubectl 설치하기

출처: 문서

본문

시작하기 전에

클러스터와 minor 버전 차이가 하나 이내인 kubectl 버전을 사용해야 해요. 예를 들어 v1.37 클라이언트는 v1.36, v1.37, v1.38 컨트롤 플레인과 통신할 수 있습니다. 최신 호환 버전의 kubectl을 사용하면 예상치 못한 문제를 피하는 데 도움이 됩니다.

Linux에 kubectl 설치

Linux에서 kubectl을 설치하는 다음 방법이 있어요:

curl로 Linux에 kubectl 바이너리 설치

  1. 최신 릴리스를 명령으로 다운로드한다:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
    

    특정 버전을 다운로드하려면 명령의 $(curl -L -s https://dl.k8s.io/release/stable.txt) 부분을 특정 버전으로 바꿔요.

    예를 들어 Linux x86-64에 v1.37을 다운로드하려면:

    curl -LO https://dl.k8s.io/release/v1.37.0/bin/linux/amd64/kubectl
    

    Linux ARM64라면:

    curl -LO https://dl.k8s.io/release/v1.37.0/bin/linux/arm64/kubectl
    
  2. 바이너리를 검증한다 (선택 사항)

    kubectl 체크섬 파일을 다운로드한다:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
    
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl.sha256"
    

    체크섬 파일에 대해 kubectl 바이너리를 검증한다:

    echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
    

    유효하다면 출력은:

    kubectl: OK
    

    검증이 실패하면 sha256는 0이 아닌 상태로 종료되고 다음과 비슷한 출력을 보여줘요:

    kubectl: FAILED
    sha256sum: WARNING: 1 computed checksum did NOT match
    

    같은 버전의 바이너리와 체크섬을 다운로드해야 해요.

  3. kubectl을 설치한다

    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    

    대상 시스템에 root 접근 권한이 없다면 여전히 kubectl을 ~/.local/bin 디렉토리에 설치할 수 있어요:

    chmod +x kubectl
    mkdir -p ~/.local/bin
    mv ./kubectl ~/.local/bin/kubectl
    # and then append (or prepend) ~/.local/bin to $PATH
    
  4. 설치한 버전이 최신인지 테스트한다:

    kubectl version --client
    

    또는 상세 보기를 위해:

    kubectl version --client --output=yaml
    

네이티브 패키지 관리로 설치

  1. apt 패키지 인덱스를 업데이트하고 Kubernetes apt 리포지토리를 사용하는 데 필요한 패키지를 설치한다:

    sudo apt-get update
    # apt-transport-https may be a dummy package; if so, you can skip that package
    sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
    
  2. Kubernetes 패키지 리포지토리의 공개 서명 키를 다운로드한다. 모든 리포지토리에 같은 서명 키가 사용되므로 URL의 버전은 무시할 수 있다:

    # If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
    # sudo mkdir -p -m 755 /etc/apt/keyrings
    curl -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 # allow unprivileged APT programs to read this keyring
    

Debian 12와 Ubuntu 22.04보다 오래된 릴리스에서는 /etc/apt/keyrings 폴더가 기본적으로 존재하지 않으며, curl 명령 전에 만들어야 해요.

  1. 적절한 Kubernetes apt 리포지토리를 추가한다. v1.37이 아닌 쿠버네티스 버전을 사용하려면 아래 명령의 <version>을 원하는 minor 버전으로 바꿔요:

    # This overwrites any existing configuration in /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   # helps tools such as command-not-found to work correctly
    

kubectl을 다른 minor 릴리스로 업그레이드하려면 apt-get updateapt-get upgrade를 실행하기 전에 /etc/apt/sources.list.d/kubernetes.list의 버전을 올려야 해요. 이 절차는 쿠버네티스 패키지 리포지토리 변경에 더 자세히 설명되어 있습니다.

  1. apt 패키지 인덱스를 업데이트하고 kubectl을 설치한다:

    sudo apt-get update
    sudo apt-get install -y kubectl
    
  2. Kubernetes yum 리포지토리를 추가한다. v1.37이 아닌 쿠버네티스 버전을 사용하려면 아래 명령의 <version>을 원하는 minor 버전으로 바꿔요.

    # This overwrites any existing configuration in /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을 다른 minor 릴리스로 업그레이드하려면 dnf update를 실행하기 전에 /etc/yum.repos.d/kubernetes.repo의 버전을 올려야 해요. 이 절차는 쿠버네티스 패키지 리포지토리 변경에 더 자세히 설명되어 있습니다.

  1. dnf로 kubectl을 설치한다:

    sudo dnf install -y kubectl
    
  2. Kubernetes zypper 리포지토리를 추가한다. v1.37이 아닌 쿠버네티스 버전을 사용하려면 아래 명령의 <version>을 원하는 minor 버전으로 바꿔요.

    # This overwrites any existing configuration in /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을 다른 minor 릴리스로 업그레이드하려면 zypper update를 실행하기 전에 /etc/zypp/repos.d/kubernetes.repo의 버전을 올려야 해요. 이 절차는 쿠버네티스 패키지 리포지토리 변경에 더 자세히 설명되어 있습니다.

  1. 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:[email protected]>
    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
    
  2. zypper로 kubectl을 설치한다:

    sudo zypper install -y kubectl
    

다른 패키지 관리로 설치

Ubuntu나 snap 패키지 관리자를 지원하는 다른 Linux 배포판을 사용한다면 kubectl을 snap 애플리케이션으로 사용할 수 있어요.

snap install kubectl --classic
kubectl version --client

Linux에서 Homebrew 패키지 관리자를 사용한다면 kubectl을 설치할 수 있어요.

brew install kubectl
kubectl version --client

kubectl 구성 확인

kubectl이 동작하는지 확인하는 방법은 kubectl 접근 구성을 참고하세요.

선택적인 kubectl 구성과 플러그인

셸 자동 완성 활성화

kubectl은 Bash, Zsh, Fish, PowerShell에 대한 자동 완성을 제공하며, 입력을 많이 줄여줘요.

아래는 Bash, Fish, Zsh에 대한 자동 완성을 설정하는 절차입니다.

kuberc 구성

자세한 내용은 kuberc를 참고하세요.

kubectl convert 플러그인 설치

  1. 최신 릴리스를 명령으로 다운로드한다:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"
    
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert"
    
  2. 바이너리를 검증한다 (선택 사항)

    kubectl-convert 체크섬 파일을 다운로드한다:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
    
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/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
    

    같은 버전의 바이너리와 체크섬을 다운로드해야 해요.

  3. kubectl-convert를 설치한다

    sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
    
  4. 플러그인이 성공적으로 설치되었는지 확인한다

    kubectl convert --help
    

    오류가 보이지 않으면 플러그인이 성공적으로 설치된 것입니다.

  5. 플러그인 설치 후 설치 파일을 정리한다:

    rm kubectl-convert kubectl-convert.sha256
    

더 알아보기 (Learn more)