在管理多个 Kubernetes 集群时,我们通常需要在本地机器上安装 kubectl 工具,并为每个集群配置相应的 kubeconfig 文件。如果手动操作,这个过程会比较繁琐。本文将介绍如何在单机上自动化这个过程,以便更高效地管理多个 K8s 集群。

安装 kubectl

首先,我们需要在本地机器上安装 kubectl 工具。以下命令将从 Amazon EKS 官方源下载并安装 kubectl 1.28 版本:

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.28.5/2024-01-04/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
  • 1.
  • 2.
  • 3.
  • 4.

创建用户

为了方便管理不同的 K8s 集群,我们可以为每个集群创建一个专用的系统用户。以下命令将创建五个用户,分别对应不同的环境和应用:

sudo useradd -m -d /home/dev-sd-ai -s /bin/bash dev-sd-ai
sudo useradd -m -d /home/pro-ai -s /bin/bash pro-ai
sudo useradd -m -d /home/pro-sd-ai -s /bin/bash pro-sd-ai
sudo useradd -m -d /home/test-ai -s /bin/bash test-ai
sudo useradd -m -d /home/test-sd-ai -s /bin/bash test-sd-ai
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

配置 kubeconfig

对于每个 K8s 集群,我们需要使用 aws eks update-kubeconfig 命令来更新本地的 kubeconfig 文件。这个命令需要在对应的用户环境下执行,以确保 kubeconfig 文件被正确写入用户的 home 目录。

例如,对于 test-ai 用户,我们可以执行以下命令来配置 kubeconfig:

sudo su - test-ai
aws eks update-kubeconfig --region region-code --name my-cluster
exit
  • 1.
  • 2.
  • 3.

注意,需要将 region-code 和 my-cluster 替换为您实际的 AWS 区域代码和 EKS 集群名称。

对于其他用户,只需重复上述步骤即可。

切换集群环境

现在,我们可以使用不同的用户身份来管理对应的 K8s 集群了。例如,要切换到 test-ai 用户环境,可以执行以下命令:

sudo su - test-ai
kubectl get nodes
  • 1.
  • 2.

这将列出 test-ai 集群的节点信息。要切换到其他集群,只需切换到对应的用户即可。

通过这种方式,我们可以在单机上轻松管理多个 K8s 集群,而无需手动编辑 kubeconfig 文件或切换上下文。每个集群都有专用的用户环境,可以避免相互干扰,也方便了权限管理。