如何安装 kubectl 命令行工具

kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群进行交互。它允许用户部署和管理容器化应用程序、查看集群资源、执行故障排查以及进行其他管理任务。kubectl 通过与 Kubernetes API 服务器通信来执行这些操作,API 服务器是 Kubernetes 集群的控制平面的一部分,负责处理集群中所有资源的请求。

今天我们将介绍如何在各种操作系统上,使用多种方式安装 kubectl 这个命令行工具。

1. 确定版本

首先到 k8s 官网的 Release History 确定你要安装的版本。目前最新的是 1.31。找到与 k8s 集群相匹配的 k8s 版本避免出现兼容性问题。

然后切换到k8s download

2. 安装 kubectl

安装过程中可能需要魔法,魔法可以去我的博客站 - 鹏叔的技术博客上找。

2.1. 使用包管理工具安装 kubectl

2.1.1. Windows 上安装 kubectl

1
choco install kubernetes-cli

2.1.2. 在 macOS 上使用 Homebrew 安装

1
2
3
brew install kubectl
# 或者
brew install kubernetes-cli

2.1.3. Debian 系列 Linux 安装 kubectl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 更新apt包索引并安装使用Kubernetes apt 存储库所需的依赖包
sudo apt-get update
# apt-transport-https可能是一个Dummy包;如果是这样,你可以去掉这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

#下载Kubernetes包存储库的公共签名密钥。所有存储库都使用相同的签名密钥,因此您可以忽略URL中的版本:
#如果文件夹“/etc/apt/keyrings”不存在,则应在先创建它,命令如下面的注释部分所示。
#sudo mkdir-p-m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/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

# 添加适当的 Kubernetesapt存储库。如果要使用不同于 v1.31 的 Kubernetes 版本,请在以下命令中将 v1.31 替换为所需的次要版本:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/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

# 更新apt软件包索引,然后安装 kubectl
sudo apt-get update
sudo apt-get install -y kubectl

2.1.4. Redhat 系列 Linux 安装 kubectl

1
2
3
4
5
6
7
8
9
10
11
12
13
# 添加 Kubernetesyum存储库。如果要使用不同于 v1.31 的 Kubernetes 版本,请在下面的命令中将 v1.31 替换为所需的次要版本。
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
EOF

# 使用以下方式安装 kubectl
sudo dnf install -y kubectl

2.1.5. SUSE 系列 Linux 安装 kubectl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 添加 Kubernetes zypper存储库。如果要使用不同于 v1.31 的 Kubernetes 版本,请在下面的命令中将 v1.31 替换为所需的次要版本。
cat <<EOF | sudo tee /etc/zypp/repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
EOF

# 更新zypper并确认新的 repo 已经添加
sudo zypper update

#使用以下方式安装 kubectl
sudo zypper install -y kubectl

2.1.6. 使用其他包管理进行安装

  1. snap

如果您使用的是 Ubuntu 或其他支持 snap 包管理器的 Linux 发行版,则 kubectl 可作为 snap 应用程序使用。

1
2
3
4

snap install kubectl --classic
kubectl version --client

  1. Homebrew

如果您使用的是 Linux 并使用 Homebrew 包管理器,则可以安装 kubectl 。

1
2
brew install kubectl
kubectl version --client

2.2. 二进制文件安装

在 Linux 上使用使用二进制文件方式安装 kubectl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

#对于 Linux x86-64 架构
curl -LO https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl
#下载 kubectl 校验和文件:
curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl.sha256"

#根据校验和文件验证 kubectl 二进制文件
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check


#对于 Linux ARM64 架构
curl -LO https://dl.k8s.io/release/v1.31.0/bin/linux/arm64/kubectl
#下载 kubectl 校验和文件:
curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/arm64/kubectl.sha256"

#根据校验和文件验证 kubectl 二进制文件
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check

chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl
# and then append (or prepend) ~/.local/bin to $PATH

3. 测试以确保您安装的版本是合适的

1
2
3
4
5

kubectl version --client
# 或者使用此视图查看版本的详细内容:
kubectl version --client --output=yaml

4. 配置 kubectl

1
2
3
4
5
6
7
8
9
# 导航到你的主目录:
cd ~
# 创建.kube目录:
mkdir .kube
# 切换到刚刚创建的.kube目录
cd .kube
# 配置 kubectl 以使用远程 Kubernetes 集群:
New-Item config -type file

5. 配置 kubectl命令补全

检查是否bash-completion 已经安装:

1
type _init_completion

如果已经安装,您将看到类似以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$type _init_completion
_init_completion 是函数
_init_completion ()
{
local exclude="" flag outx errx inx OPTIND=1;
while getopts "n:e:o:i:s" flag "$@"; do
case $flag in
n)
exclude+=$OPTARG
;;
e)
errx=$OPTARG
;;
o)
outx=$OPTARG
;;

如果尚未安装,请使用 apt 或 yum 安装,具体取决于您使用的包管理器(Ubuntu 通常使用 apt):

1
apt-get install bash-completion 

或者

1
dnf install bash-completion

为您的 shell 会话设置 kubectl 完成脚本源:

对于系统上的所有用户:

1
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null

重新加载 bash shell。输入kubectl -后按两次 tab 键查看可用选项,并验证自动完成功能是否正常工作:

1
2
3
4
5
6
7
8

-as-group (Group to impersonate for the operation, this flag can be repeated to specify mu…)
--as-uid (UID to impersonate for the operation.)
--as (Username to impersonate for the operation. User could be a regular user or a se…)
--cache-dir (Default cache directory)
--certificate-authority (Path to a cert file for the certificate authority)
--client-certificate (Path to a client certificate file for TLS)

6. 验证 kubectl 配置

为了让 kubectl 找到并访问 Kubernetes 集群,它需要一个 kubeconfig 文件,该文件会在您使用 kube-up.sh 创建集群 或成功部署 Minikube 集群时自动创建。默认情况下,kubectl 配置位于~/.kube/config。

通过获取集群状态检查 kubectl 是否正确配置:

1
2
3
kubectl cluster-info
# 或者
kubectl --kubeconfig=/PATH/TO/KUBECONFIG cluster-info

如果您看到 URL 响应,则表示 kubectl 已正确配置以访问您的集群。

如果您看到类似以下内容的消息,则表示 kubectl 配置不正确或无法连接到 Kubernetes 集群。

1
The connection to the server <server-name:port> was refused - did you specify the right host or port?

7. 参考文档

k8s 官网

Download Kubernetes

kubectl reference documentation.

安装 kubectl 命令行工具

Vultr Kubernetes Engine (VKE) Reference Guide

如何安装 kubectl 命令行工具

https://pengtech.net/k8s/linux_install_kubectl.html

作者

鹏叔

发布于

2024-08-30

更新于

2024-09-01

许可协议

评论