解密 Kubernetes 的世界:本地如何與 EKS 搭建橋梁
AWS CLI[1] 是與 AWS 服務(wù)(包括 Amazon EKS)結(jié)合使用的命令行工具。該工具還可用于對(duì)從本地計(jì)算機(jī)訪問(wèn) Amazon EKS 集群和其他 AWS 資源的 IAM 用戶或角色進(jìn)行身份驗(yàn)證。要通過(guò)命令行在 AWS 中預(yù)置資源,您需要獲取 AWS 訪問(wèn)密鑰 ID 和私有密鑰,以便在命令行中使用。然后,您需要在 AWS CLI 中配置這些憑證。如果尚未安裝 AWS CLI,請(qǐng)參閱《AWS 命令行界面用戶指南》中的安裝或更新 AWS CLI 的最新版本[2]。
安裝或更新到最新版本的 AWS CLI
Linux
要更新當(dāng)前安裝的 AWS CLI,請(qǐng)?jiān)诿看胃聲r(shí)下載一個(gè)新的安裝程序以覆蓋以前的版本。按照命令行中的以下步驟 AWS CLI 在 Linux 上安裝。 要安裝 AWS CLI,請(qǐng)運(yùn)行以下命令。
這邊安裝的是 x86 架構(gòu),如果你的是 arm 架構(gòu)可以使用這個(gè):https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
可選:要更新 AWS CLI的當(dāng)前安裝,請(qǐng)?zhí)砑蝇F(xiàn)有的符號(hào)鏈接和安裝程序信息,以使用 --bin-dir、--install-dir 和 --update 參數(shù)構(gòu)造 install 命令。以下命令塊使用以下符號(hào)鏈接示例 /usr/local/bin 以及安裝程序位置的示例 /usr/local/aws-cli
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
解釋下這條命令:sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
./aws/install
? 運(yùn)行當(dāng)前目錄下的 AWS CLI 安裝程序。install 是 AWS 提供的一個(gè)安裝腳本。
--bin-dir /usr/local/bin
? 指定 aws 命令的可執(zhí)行文件 (aws-cli 二進(jìn)制文件) 將安裝到 /usr/local/bin 目錄。
? /usr/local/bin 是系統(tǒng)的全局 PATH 路徑之一,這樣可以直接通過(guò) aws 命令在終端中使用 AWS CLI。
--install-dir /usr/local/aws-cli
? 指定 AWS CLI 的主安裝目錄為 /usr/local/aws-cli。
? 這里存放 AWS CLI 的核心文件(例如工具的庫(kù)文件、腳本等)。
--update
? 如果已經(jīng)存在一個(gè) AWS CLI 版本,使用此選項(xiàng)會(huì)將其更新到最新版本。
? 沒(méi)有此選項(xiàng)時(shí),如果 AWS CLI 已安裝,可能會(huì)報(bào)錯(cuò)。
要查找現(xiàn)有的符號(hào)鏈接和安裝目錄,請(qǐng)執(zhí)行以下步驟: 使用 which 命令查找符號(hào)鏈接。這為您提供了與 --bin-dir 參數(shù)一起使用的路徑。
$ which aws
/usr/local/bin/aws
使用 ls 命令查找符號(hào)鏈接指向的目錄。這為您提供了與 --install-dir 參數(shù)一起使用的路徑。
$ ls -l /usr/local/bin/aws
lrwxrwxrwx 1 ec2-user ec2-user 49 Oct 22 09:49 /usr/local/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws
通過(guò)以下命令確認(rèn)此安裝。
$ aws --version
aws-cli/2.17.20 Python/3.11.6 Linux/5.10.205-195.807.amzn2.x86_64 botocore/2.4.5
如果無(wú)法找到 aws 命令,您可能需要重新啟動(dòng)終端或按照對(duì)錯(cuò)誤進(jìn)行故障排除 AWS CLI中的說(shuō)明排除故障[3]。
macOS
以下步驟說(shuō)明如何使用標(biāo)準(zhǔn) macOS 用戶界面和瀏覽器安裝最新版本的。
1.在瀏覽器中,下載 macOS pkg 文件:
2.運(yùn)行下載的文件,然后按照屏幕上的說(shuō)明進(jìn)行操作。您可以選擇通過(guò)以下 AWS CLI 方式安裝:
? 針對(duì)電腦上的所有用戶(需要 sudo)
a.您可以安裝到任何文件夾,或選擇推薦的默認(rèn)文件夾 /usr/local/aws-cli。
b.安裝程序會(huì)自動(dòng)在 /usr/local/bin/aws 中創(chuàng)建一個(gè)符號(hào)鏈接,該鏈接指向您選擇的安裝文件夾中的主程序。
? 僅針對(duì)當(dāng)前用戶(不需要 sudo)
a.您可以安裝到具有寫(xiě)入權(quán)限的任何文件夾。
b.由于具有標(biāo)準(zhǔn)用戶權(quán)限,在安裝程序完成后,您必須在命令提示符下使用以下命令在 PATH 中手動(dòng)創(chuàng)建指向 aws 和 aws_completer 程序的符號(hào)鏈接文件。如果 PATH 包含您可以寫(xiě)入的文件夾,并且您將該文件夾指定為目標(biāo)路徑,則可以在不使用 sudo 的情況下運(yùn)行以下命令。如果 PATH 中沒(méi)有可寫(xiě)入的文件夾,您必須在命令中使用 sudo,以獲取寫(xiě)入指定目標(biāo)文件夾的權(quán)限。符號(hào)鏈接的默認(rèn)位置為 /usr/local/bin/。
$ sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
$ sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
注意:您可以在安裝過(guò)程中的任意時(shí)刻按 Cmd+L 來(lái)查看安裝的調(diào)試日志。這會(huì)打開(kāi)一個(gè)日志窗格,讓您能夠篩選和保存日志。日志文件還會(huì)自動(dòng)保存到 /var/log/install.log。
3.要驗(yàn)證 Shell 是否可以在 $PATH 中找到并運(yùn)行 aws 命令,請(qǐng)使用以下命令。
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.17.20 Python/3.11.6 Darwin/23.3.0 botocore/2.4.5
4.如果無(wú)法找到 aws 命令,您可能需要重新啟動(dòng)終端或按照對(duì)錯(cuò)誤進(jìn)行故障排除 AWS CLI中的說(shuō)明排除故障[4]。
創(chuàng)建訪問(wèn)密鑰
1.登錄到 AWS Management Console[5]。
圖片
2.對(duì)于單用戶或多用戶賬戶:
? 但用戶賬戶 – 在右上角,選擇您的 AWS 用戶名以打開(kāi)導(dǎo)航菜單。例如,選擇 webadmin。
? 多用戶賬戶 – 從服務(wù)列表中選擇 IAM。在 IAM 控制面板中,選擇用戶,然后選擇用戶的名稱。
圖片
3.選擇安全憑證。
圖片
4.在訪問(wèn)密鑰下,選擇創(chuàng)建訪問(wèn)密鑰。
進(jìn)到這個(gè)頁(yè)面:
圖片
5.選擇命令行界面(CLI),然后選擇下一步。
圖片
6.選擇創(chuàng)建訪問(wèn)密鑰。
這邊你自己選擇個(gè)名稱,然后創(chuàng)建:
圖片
7.選擇下載 .csv 文件。
這邊你可以下載 csv 文件,也可以直接復(fù)制 Access key 和 Secret access key
圖片
配置 AWS CLI
在終端窗口中,輸入以下命令:
aws configure
您還可以選擇配置一個(gè)命名配置文件,例如 --profile cluster-admin。如果您在 AWS CLI 中配置了命名配置文件,則必須始終在后續(xù)命令中傳遞此標(biāo)志。
輸入 AWS 憑證。例如:
Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: region-code
Default output format [None]: json # 可填可不填,如果填的話,選擇 json
更新 kubeconfig 文件
運(yùn)行下面的 AWS CLI 命令:
aws eks update-kubeconfig --region "REGION" --name "CLUSTER_NAME"
這條命令會(huì):
? 自動(dòng)連接到指定區(qū)域 (REGION) 中的指定 EKS 集群 (CLUSTER_NAME)。
? 更新或創(chuàng)建默認(rèn)路徑下的 ~/.kube/config 文件,并添加 EKS 集群的訪問(wèn)配置。
驗(yàn)證配置
在更新完成后,運(yùn)行以下命令驗(yàn)證 kubeconfig 是否配置成功:
kubectl get nodes
? 如果返回了集群中的節(jié)點(diǎn)列表,說(shuō)明 kubeconfig 文件已正確配置,EKS 集群連接成功。
? 如果出現(xiàn)錯(cuò)誤,比如 Unable to connect to the server 或 Forbidden,需要檢查 IAM 用戶或角色是否具有對(duì) EKS 集群的訪問(wèn)權(quán)限。
引用鏈接
[1] AWS CLI: https://aws.amazon.com/cli/
[2] 安裝或更新 AWS CLI 的最新版本: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html
[3] 對(duì)錯(cuò)誤進(jìn)行故障排除 AWS CLI中的說(shuō)明排除故障: https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-troubleshooting.html
[4] 對(duì)錯(cuò)誤進(jìn)行故障排除 AWS CLI中的說(shuō)明排除故障: https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-troubleshooting.html
[5] AWS Management Console: https://console.aws.amazon.com/