目录
2.1、在 Linux 上使用 curl 安装 kubectl 二进制文件
一、Kubernetes
也称为 K8s,是一个开源系统,用于自动部署、扩展和管理容器化应用程序。
它将构成应用程序的容器分组为逻辑单元,以便于管理和发现。Kubernetes 建立在 Google 15 年运行生产工作负载的经验之上,并结合了来自社区的最佳创意和实践。
行星规模
Kubernetes 的设计原则与允许 Google 每周运行数十亿个容器的原则相同,它可以在不增加运维团队的情况下进行扩展。
永不长大
无论是在本地进行测试还是在全球企业中运营,Kubernetes 的灵活性都会随着您的增长而增长,无论您的需求多么复杂,都能始终如一地轻松交付您的应用程序。
随时随地运行 K8s
Kubernetes 是开源的,让您可以自由地利用本地、混合或公共云基础设施,让您轻松地将工作负载转移到对您重要的地方。
Kubernetes 功能
- 自动推出和回滚
Kubernetes 逐步推出对您的应用程序或其配置的更改,同时监控应用程序的运行状况以确保它不会同时杀死您的所有实例。如果出现问题,Kubernetes 将为您回滚更改。利用不断发展的部署解决方案生态系统。
- 服务发现和负载均衡
无需修改您的应用程序以使用不熟悉的服务发现机制。Kubernetes 为 Pod 提供了自己的 IP 地址和一组 Pod 的单个 DNS 名称,并且可以在它们之间进行负载平衡。
- 秘密和布置管理
部署和更新机密和应用程序配置,而无需重建映像,也不会在堆栈配置中暴露机密。
- 自动装箱
根据资源需求和其他限制自动放置容器,同时不牺牲可用性。混合关键工作负载和尽力而为的工作负载,以提高利用率并节省更多资源。
- 批量执行
除了服务之外,Kubernetes 还可以管理您的批处理和 CI 工作负载,如果需要,可以替换失败的容器。
- IPv4/IPv6双栈
将 IPv4 和 IPv6 地址分配给 Pod 和服务
- 水平缩放
使用简单的命令、使用 UI 或根据 CPU 使用情况自动缩放您的应用程序。
- 自我修复
重新启动失败的容器,在节点死亡时替换和重新调度容器,杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不将它们通告给客户端。
- 可扩展
在不更改上游源代码的情况下向 Kubernetes 集群添加功能。
二、在 Linux 上安装和设置 kubectl
1、在开始之前
您必须使用与集群的一个次要版本差异内的 kubectl 版本。例如,v1.24 客户端可以与 v1.23、v1.24 和 v1.25 控制平面进行通信。使用 kubectl 的最新兼容版本有助于避免不可预见的问题。
2、在 Linux 上安装 kubectl
在 Linux 上安装 kubectl 有以下方法:
2.1、在 Linux 上使用 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)
命令的部分替换为特定版本。例如,要在 Linux 上下载 v1.24.0 版本,请键入:
curl -LO https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl
-
验证二进制文件(可选)
下载 kubectl 校验和文件:
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
如果检查失败,
sha256
则以非零状态退出并打印类似于以下内容的输出: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 访问权限,您仍然可以将 kubectl 安装到该
~/.local/bin
目录:chmod +x kubectl mkdir -p ~/.local/bin mv ./kubectl ~/.local/bin/kubectl # and then append (or prepend) ~/.local/bin to $PATH
-
测试以确保您安装的版本是最新的:
kubectl version --client
或者使用它来查看版本的详细信息:
kubectl version --client --output=yaml
2.2、使用本机包管理安装
-
更新
apt
包索引并安装使用 Kubernetesapt
存储库所需的包:sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
-
下载 Google Cloud 公共签名密钥:
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
-
添加 Kubernetes
apt
存储库:echo "deb [signed-by=/usr/share/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
2.3、使用其他包管理安装
如果您使用的是 Ubuntu 或其他支持snap
包管理器的 Linux 发行版,则 kubectl 可作为snap
应用程序使用。
snap install kubectl --classic kubectl version --client
3、验证 kubectl 配置
为了让 kubectl 找到和访问 Kubernetes 集群,它需要一个kubeconfig 文件,该文件在您使用kube-up.sh创建集群 或成功部署 Minikube 集群时自动创建。默认情况下,kubectl 配置位于~/.kube/config
.
通过获取集群状态检查 kubectl 是否正确配置:
kubectl cluster-info
如果您看到 URL 响应,则 kubectl 已正确配置为访问您的集群。
如果您看到类似以下的消息,则 kubectl 配置不正确或无法连接到 Kubernetes 集群。
The connection to the server <server-name:port> was refused - did you specify the right host or port?
例如,如果您打算在笔记本电脑(本地)上运行 Kubernetes 集群,则需要先安装 Minikube 之类的工具,然后重新运行上述命令。
如果 kubectl cluster-info 返回 url 响应但您无法访问您的集群,请检查它是否配置正确,请使用:
kubectl cluster-info dump
4、可选的 kubectl 配置和插件
4.1、启用 shell 自动完成
kubectl 为 Bash、Zsh、Fish 和 PowerShell 提供了自动补全支持,可以为您节省大量输入。
4.2、介绍
可以使用命令生成 Bash 的 kubectl 完成脚本kubectl completion bash
。在您的 shell 中获取完成脚本会启用 kubectl 自动完成。
但是,补全脚本依赖于bash-completion,这意味着你必须先安装这个软件(你可以通过运行来测试你是否已经安装了 bash-completion type _init_completion
)。
4.3、安装 bash 补全
bash-completion 由许多包管理器提供。您可以使用apt-get install bash-completion
oryum install bash-completion
等安装它。
上面的命令 create /usr/share/bash-completion/bash_completion
,它是 bash-completion 的主要脚本。根据您的包管理器,您必须在文件中手动获取此~/.bashrc
文件。
要找出答案,请重新加载您的 shell 并运行type _init_completion
. 如果命令成功,则您已经设置好,否则将以下内容添加到您的~/.bashrc
文件中:
source /usr/share/bash-completion/bash_completion
重新加载您的 shell 并通过键入 验证 bash-completion 是否已正确安装type _init_completion
。
4.4、启用 kubectl 自动补全
重击
您现在需要确保 kubectl 完成脚本在您的所有 shell 会话中获取源。有两种方法可以做到这一点:
echo 'source <(kubectl completion bash)' >>~/.bashrc
如果您有 kubectl 的别名,您可以扩展 shell 补全以使用该别名:
echo 'alias k=kubectl' >>~/.bashrc echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
/etc/bash_completion.d
.
两种方法是等效的。重新加载 shell 后,kubectl 自动完成功能应该可以工作了。
4.5、安装kubectl convert
插件
Kubernetes 命令行工具的插件kubectl
,允许您在不同 API 版本之间转换清单。这对于将清单迁移到具有较新 Kubernetes 版本的非弃用 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 校验和文件:
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
则以非零状态退出并打印类似于以下内容的输出: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
如果您没有看到错误,则表示插件已成功安装。