website/content/zh-cn/docs/tasks/tools/install-kubectl-linux.md

16 KiB
Raw Blame History

title content_type weight card
在 Linux 系统中安装并设置 kubectl task 10
name weight title
tasks 20 在 Linux 系统中安装 kubectl

{{% heading "prerequisites" %}}

kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如v{{< skew currentVersion >}} 版本的客户端能与 v{{< skew currentVersionAddMinor -1 >}}、 v{{< skew currentVersionAddMinor 0 >}} 和 v{{< skew currentVersionAddMinor 1 >}} 版本的控制面通信。 用最新兼容版的 kubectl 有助于避免不可预见的问题。

在 Linux 系统中安装 kubectl

在 Linux 系统中安装 kubectl 有如下几种方法:

用 curl 在 Linux 系统中安装 kubectl

  1. 用以下命令下载最新发行版:

    {{< tabs name="download_binary_linux" >}} {{< tab name="x86-64" codelang="bash" >}} curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" {{< /tab >}} {{< tab name="ARM64" codelang="bash" >}} curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" {{< /tab >}} {{< /tabs >}}

    {{< note >}}

    如需下载某个指定的版本,请用指定版本号替换该命令的这一部分: $(curl -L -s https://dl.k8s.io/release/stable.txt)

    例如,要在 Linux x86-64 中下载 {{< skew currentPatchVersion >}} 版本,请输入:

    curl -LO https://dl.k8s.io/release/v{{< skew currentPatchVersion >}}/bin/linux/amd64/kubectl
    

    对于 Linux ARM64 来说,请输入:

    curl -LO https://dl.k8s.io/release/v{{< skew currentPatchVersion >}}/bin/linux/arm64/kubectl
    

    {{< /note >}}

  1. 验证该可执行文件(可选步骤)

    下载 kubectl 校验和文件:

    {{< tabs name="download_checksum_linux" >}} {{< tab name="x86-64" codelang="bash" >}} curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256" {{< /tab >}} {{< tab name="ARM64" codelang="bash" >}} curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl.sha256" {{< /tab >}} {{< /tabs >}}

    基于校验和文件,验证 kubectl 的可执行文件:

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

    验证通过时,输出为:

    kubectl: OK
    

    验证失败时,sha256 将以非零值退出,并打印如下输出:

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

    {{< note >}}

    下载的 kubectl 与校验和文件版本必须相同。 {{< /note >}}

  1. 安装 kubectl

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

    {{< note >}}

    即使你没有目标系统的 root 权限,仍然可以将 kubectl 安装到目录 ~/.local/bin 中:

    chmod +x kubectl
    mkdir -p ~/.local/bin
    mv ./kubectl ~/.local/bin/kubectl
    # 之后将 ~/.local/bin 附加(或前置)到 $PATH
    

    {{< /note >}}

  1. 执行测试,以保障你安装的版本是最新的:

    kubectl version --client
    

    或者使用如下命令来查看版本的详细信息:

    kubectl version --client --output=yaml
    

用原生包管理工具安装

{{< tabs name="kubectl_install" >}} {{% tab name="基于 Debian 的发行版" %}}

  1. 更新 apt 包索引,并安装使用 Kubernetes apt 仓库所需要的包:

    sudo apt-get update
    # apt-transport-https 可以是一个虚拟包;如果是这样,你可以跳过这个包
    sudo apt-get install -y apt-transport-https ca-certificates curl
    
  1. 下载 Kubernetes 软件包仓库的公共签名密钥。 同一个签名密钥适用于所有仓库,因此你可以忽略 URL 中的版本信息:

    curl -fsSL https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    
  1. 添加合适的 Kubernetes apt 仓库。如果你想用 {{< param "version" >}} 之外的 Kubernetes 版本, 请将下面命令中的 {{< param "version" >}} 替换为所需的次要版本:

    # 这会覆盖 /etc/apt/sources.list.d/kubernetes.list 中的所有现存配置
    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    

    {{< note >}}

    要升级 kubectl 到别的次要版本,你需要先升级 /etc/apt/sources.list.d/kubernetes.list 中的版本, 再运行 apt-get updateapt-get upgrade。 更详细的步骤可以在更改 Kubernetes 软件包仓库中找到。 {{< /note >}}

  1. 更新 apt 包索引,然后安装 kubectl

    sudo apt-get update
    sudo apt-get install -y kubectl
    

{{< note >}}

在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 可以使用 sudo mkdir -m 755 /etc/apt/keyrings 来创建。 {{< /note >}}

{{% /tab %}}

{{% tab name="基于 Red Hat 的发行版" %}}

  1. 添加 Kubernetes 的 yum 仓库。如果你想使用 {{< param "version" >}} 之外的 Kubernetes 版本, 将下面命令中的 {{< param "version" >}} 替换为所需的次要版本。
# 这会覆盖 /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:/{{< param "version" >}}/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/{{< param "version" >}}/rpm/repodata/repomd.xml.key
EOF

{{< note >}}

要将 kubectl 升级到别的次要版本,你需要先升级 /etc/yum.repos.d/kubernetes.repo 中的版本,再运行 yum update 命令。 更详细的步骤可以在更改 Kubernetes 软件包存储库中找到。 {{< /note >}}

  1. 使用 yum 安装 kubectl
sudo yum install -y kubectl

{{% /tab %}} {{< /tabs >}}

用其他包管理工具安装

{{< tabs name="other_kubectl_install" >}} {{% tab name="Snap" %}}

如果你使用的 Ubuntu 或其他 Linux 发行版,内建支持 snap 包管理工具, 则可用 snap 命令安装 kubectl。

snap install kubectl --classic
kubectl version --client

{{% /tab %}}

{{% tab name="Homebrew" %}}

如果你使用 Linux 系统,并且装了 Homebrew 包管理工具, 则可以使用这种方式安装 kubectl。

brew install kubectl
kubectl version --client

{{% /tab %}}

{{< /tabs >}}

验证 kubectl 配置

{{< include "included/verify-kubectl.md" >}}

kubectl 的可选配置和插件

启用 shell 自动补全功能

kubectl 为 Bash、Zsh、Fish 和 PowerShell 提供自动补全功能,可以为你节省大量的输入。

下面是为 Bash、Fish 和 Zsh 设置自动补全功能的操作步骤。

{{< tabs name="kubectl_autocompletion" >}} {{< tab name="Bash" include="included/optional-kubectl-configs-bash-linux.md" />}} {{< tab name="Fish" include="included/optional-kubectl-configs-fish.md" />}} {{< tab name="Zsh" include="included/optional-kubectl-configs-zsh.md" />}} {{< /tabs >}}

安装 kubectl convert 插件

{{< include "included/kubectl-convert-overview.md" >}}

  1. 用以下命令下载最新发行版:

    {{< tabs name="download_convert_binary_linux" >}} {{< tab name="x86-64" codelang="bash" >}} curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert" {{< /tab >}} {{< tab name="ARM64" codelang="bash" >}} curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert" {{< /tab >}} {{< /tabs >}}

  1. 验证该可执行文件(可选步骤)

    下载 kubectl-convert 校验和文件:

    {{< tabs name="download_convert_checksum_linux" >}} {{< tab name="x86-64" codelang="bash" >}} curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256" {{< /tab >}} {{< tab name="ARM64" codelang="bash" >}} curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert.sha256" {{< /tab >}} {{< /tabs >}}

    基于校验和,验证 kubectl-convert 的可执行文件:

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

    验证通过时,输出为:

    kubectl-convert: OK
    

    验证失败时,sha256 将以非零值退出,并打印输出类似于:

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

    {{< note >}}

    下载相同版本的可执行文件和校验和。 {{< /note >}}

  1. 安装 kubectl-convert

    sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
    
  1. 验证插件是否安装成功

    kubectl convert --help
    

    如果你没有看到任何错误就代表插件安装成功了。

  1. 安装插件后,清理安装文件:

    rm kubectl-convert kubectl-convert.sha256
    

{{% heading "whatsnext" %}}

{{< include "included/kubectl-whats-next.md" >}}