在雲端環境中管理 Kubernetes 叢集需要熟悉相關工具和流程。本文詳細說明如何使用 AWS CLI、kubectl 和 eksctl 等命令列工具來操作和管理 Amazon EKS 叢集。首先,我們會建立一個專用的 Linux 使用者以避免設定檔衝突,接著逐步引導讀者安裝和設定 AWS CLI、kubectl 和 eksctl,並提供驗證安裝的指令。同時,文章也涵蓋了安全性考量和效能最佳化的建議,確保讀者在管理 EKS 叢集時能兼顧安全性和效率。
使用 AWS CLI 與 AWS 控制檯管理 Amazon EKS 叢集
在前面的章節中,我們已經成功地建立了一個 Amazon EKS 叢集。現在,我們將探討如何使用 AWS CLI 和 AWS 控制檯來管理和監控這個叢集。
使用 AWS CLI 驗證身分與列出叢集
首先,我們需要確認 AWS CLI 已經透過身份驗證,可以使用 aws sts get-caller-identity 命令來驗證。
shiva@wks01:~$ aws sts get-caller-identity
{
"UserId": "AIDAQAFVWO7Y2NBGEQR6K",
"Account": "000381057009",
"Arn": "arn:aws:iam::000381057009:user/shiva"
}
shiva@wks01:~$
內容解密:
aws sts get-caller-identity命令用於驗證當前 AWS CLI 的身份。- 傳回的
UserId、Account和Arn資訊確認了當前使用者的身分和所屬的 AWS 帳戶。
接下來,我們可以使用 aws eks list-clusters 命令列出所有可用的 EKS 叢集。
描述 EKS 叢集的詳細資訊
我們可以使用 aws eks describe-cluster 命令來取得特定 EKS 叢集的詳細資訊。
shiva@wks01:~$ aws eks describe-cluster --name myeks01 --output text
CLUSTER arn:aws:eks:us-east-2:000381057009:cluster/myeks01
2023-08-27T03:08:43.597000+00:00 https://6CACF45813FE620AF8DEC4020009AEC0.gr7.us-east-2.eks.amazonaws.com myeks01 eks.5 arn:aws:iam::000381057009:role/eksClusterRole ACTIVE 1.27
CERTIFICATEAUTHORITY LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJQ0ZwWWpsRFBpSnN3RFFZSktvWkl<SNIP>UlRJRklDQVRFLS0tLS0K
OIDC https://oidc.eks.us-east-2.amazonaws.com/id/6CACF45813FE620AF8DEC4020009AEC0
KUBERNETESNETWORKCONFIG ipv4 10.100.0.0/16
CLUSTERLOGGING True api audit authenticator
CLUSTERLOGGING False controllerManager scheduler
RESOURCESVPCCONFIG sg-0007be804cf34a8d2 False True vpc-0170477d07283a976
PUBLICACCESSCIDRS 0.0.0.0/0
SUBNETIDS subnet-046606aaf23a20416
SUBNETIDS subnet-068ac163d2cbd074b
SUBNETIDS subnet-0f03119b46d02a63a
shiva@wks01:~$
內容解密:
aws eks describe-cluster --name myeks01命令用於取得名為myeks01的 EKS 叢集的詳細資訊。- 傳回的資訊包括叢集的 ARN、狀態、Kubernetes 版本、網路組態和日誌記錄設定等。
CERTIFICATEAUTHORITY部分包含了叢集的憑證授權單位資訊,用於驗證叢集的身份。OIDC部分提供了叢集的 OpenID Connect 提供者 URL,用於身份驗證和授權。KUBERNETESNETWORKCONFIG部分定義了叢集的網路組態,包括 Pod 的 IP 範圍。CLUSTERLOGGING部分顯示了叢集的日誌記錄設定,包括哪些日誌型別被啟用。RESOURCESVPCCONFIG部分包含了叢集的 VPC 和子網路組態資訊。
使用 AWS 控制檯檢視 EKS 叢集詳細資訊
除了使用 AWS CLI,我們也可以透過 AWS 控制檯來檢視和管理 EKS 叢集。
圖表翻譯:
此圖示顯示了在 AWS 控制檯中檢視 EKS 叢集詳細資訊的頁面。
graph LR
A[AWS 控制檯] --> B[EKS 叢集列表]
B --> C[選擇特定叢集]
C --> D[叢集詳細資訊頁面]
D --> E[資源標籤頁]
D --> F[計算標籤頁]
D --> G[網路標籤頁]
D --> H[附加元件標籤頁]
D --> I[身份驗證標籤頁]
D --> J[日誌記錄標籤頁]
圖表翻譯:
此圖示呈現了透過 AWS 控制檯導航到 EKS 叢集詳細資訊頁面的過程。使用者可以檢視叢集的各種組態和狀態,包括資源、計算、網路、附加元件、身份驗證和日誌記錄等。
檢視叢集資源
在 AWS 控制檯中,我們可以檢視叢集的資源,包括節點、名稱空間和 Pod 等。
圖表翻譯:
此圖示顯示了 EKS 叢集的資源標籤頁。
graph LR
A[資源標籤頁] --> B[節點資訊]
A --> C[名稱空間資訊]
A --> D[Pod 資訊]
D --> E[CoreDNS Pod 狀態]
圖表翻譯:
此圖示呈現了 EKS 叢集資源標籤頁的內容,包括節點、名稱空間和 Pod 的資訊。特別地,CoreDNS Pod 的狀態被顯示為 “Degraded”,因為目前叢集中沒有可用的計算節點。
新增計算節點
目前,我們的 EKS 叢集中還沒有任何計算節點。我們需要新增節點組(Node Group)來提供計算資源。
圖表翻譯:
此圖示顯示了新增計算節點的選項。
graph LR
A[計算標籤頁] --> B[新增節點組]
B --> C[選擇節點組型別]
C --> D[組態節點組詳細資訊]
D --> E[啟動節點組]
圖表翻譯:
此圖示呈現了在 EKS 叢集中新增計算節點的流程。使用者需要選擇節點組型別,組態詳細資訊,然後啟動節點組。
- 自動化叢集管理:利用 AWS 提供的工具和服務(如 AWS CloudFormation 和 AWS CLI)來自動化 EKS 叢集的建立和管理過程。
- 安全性增強:實施額外的安全措施,如使用 IAM 角色和策略來限制對叢集的存取,以及啟用叢集日誌記錄和監控。
- 應用程式佈署:學習如何在 EKS 叢集中佈署和管理容器化應用程式,包括使用 Kubernetes 的佈署(Deployment)和服務(Service)資源。
- 效能最佳化:根據應用程式的需求調整叢集的組態和資源分配,以最佳化效能和成本效率。
透過這些步驟,我們可以充分利用 Amazon EKS 的功能來構建高效、安全的容器化應用程式環境。
在AWS上建立Elastic Kubernetes Service(EKS)叢集並新增計算節點
建立EKS叢集
在前面的章節中,我們已經瞭解瞭如何在本地環境中使用Kubernetes。現在,我們將進一步探討如何在AWS上使用Elastic Kubernetes Service(EKS)來建立和管理Kubernetes叢集。
建立IAM群組和使用者
首先,我們需要建立IAM群組和使用者,並將必要的策略附加到這些群組上。這是為了確保我們有足夠的許可權來建立和管理EKS叢集。
- 登入AWS管理主控台,導航到IAM服務。
- 建立新的IAM群組,例如
EKSAdminGroup。 - 將必要的策略附加到該群組,例如
AmazonEKSClusterPolicy和AmazonEKSServicePolicy。 - 建立新的IAM使用者,並將其新增到剛才建立的群組中。
建立EKS叢集
現在,我們可以開始建立EKS叢集。
- 導航到EKS服務,點選「建立叢集」。
- 輸入叢集名稱,例如
myeks01。 - 選擇Kubernetes版本和其他相關設定。
- 在「叢集管理員角色」部分,選擇剛才建立的IAM角色。
- 點選「建立叢集」按鈕。
檢視叢集資訊
一旦叢集建立完成,我們可以檢視叢集的詳細資訊。
- 叢集概述:顯示叢集的一般資訊,如名稱、狀態、Kubernetes版本等。
- API伺服器和稽核日誌:啟用API伺服器和稽核日誌功能,這些功能對於監控和除錯叢集非常重要。
- 更新歷史:顯示叢集的更新歷史,可以用來追蹤對叢集管理階層所做的變更。
新增計算節點到叢集
要讓叢集能夠執行工作負載,我們需要新增計算節點。
建立節點群組
- 導航到EKS服務,選擇剛才建立的叢集。
- 點選「計算」標籤,然後點選「新增節點群組」按鈕。
- 輸入節點群組的名稱,例如
myEKSNodeGroup01。
建立節點IAM角色
- 開啟IAM服務,導航到「角色」頁面。
- 點選「建立角色」,選擇「AWS服務」作為信任實體。
- 選擇「EC2」作為使用案例。
- 附加必要的策略到該角色,例如
AmazonEKS_CNI_Policy、AmazonEKSWorkerNodePolicy和AmazonEC2ContainerRegistryReadOnly。 - 為角色命名,例如
myAWSEKSNodeRole。
組態節點群組
- 傳回到建立節點群組的頁面,選擇剛才建立的IAM角色。
- 選擇適當的例項型別,例如
t3a.medium。 - 組態節點群組的擴充套件設定,例如最小、最大和期望的節點數量。
- 點選「建立節點群組」按鈕。
驗證節點群組建立
一旦節點群組建立完成,AWS會確認建立狀態。我們可以檢查叢集的計算資源是否已經就緒,並且Kubernetes系統Pod是否已經被排程到新的節點上執行。
程式碼範例:建立EKS叢集的AWS CLI命令
# 建立EKS叢集
aws eks create-cluster --name myeks01 --role-arn arn:aws:iam::123456789012:role/EKSClusterRole
# 建立節點群組
aws eks create-nodegroup --cluster-name myeks01 --nodegroup-name myEKSNodeGroup01 --subnets subnet-12345678 subnet-90123456 --node-role arn:aws:iam::123456789012:role/myAWSEKSNodeRole
內容解密:
上述AWS CLI命令用於建立EKS叢集和節點群組。第一條命令建立了一個名為myeks01的EKS叢集,並指定了叢集管理員角色。第二條命令在該叢集中建立了一個名為myEKSNodeGroup01的節點群組,並指定了子網路和節點IAM角色。
隨著公有雲技術的發展,Kubernetes叢集的管理和佈署變得越來越便捷。未來,我們可以期待更多的創新技術出現,以簡化Kubernetes叢集的維運工作。例如,AWS的Fargate技術使得無伺服器容器佈署成為可能,大大簡化了節點管理的工作。
安全性考量
在公有雲上佈署Kubernetes叢集時,安全性是一個非常重要的考量。我們需要確保IAM角色和策略的組態正確,以避免未授權的存取。同時,也需要監控叢集的日誌和效能指標,以便及時發現和解決潛在的安全問題。
效能最佳化
為了最佳化Kubernetes叢集的效能,我們需要根據實際的工作負載情況調整節點群組的組態。例如,可以根據需求調整節點的例項型別和數量。同時,也需要監控叢集的資源使用情況,以便及時進行調整。
EKS叢集架構圖
graph LR;
A[使用者] -->|管理| B[EKS叢集];
B --> C[節點群組];
C --> D[EC2例項];
B --> E[API伺服器];
E --> F[稽核日誌];
C --> G[容器執行環境];
G --> H[應用程式];
圖表翻譯: 此圖表展示了EKS叢集的架構,包括使用者如何與叢集互動、管理節點群組、執行容器化應用程式,以及API伺服器和稽核日誌的功能。
管理 Amazon EKS 叢集的操作
在前一章中,我們成功建立了 Amazon Elastic Kubernetes Service(EKS)叢集。本章將探討如何操作和管理該叢集,包括啟動工作負載、管理運算節點、新增和刪除使用者等任務。
設定命令列存取 EKS 叢集
要實作對 EKS 叢集的程式化互動,首先需要設定命令列存取。主要的工具包括 aws cli 和 eksctl 程式。
建立新的 Linux 使用者
為了區分管理 EKS 叢集的使用者和原本的 Linux 使用者 shiva,我們將建立一個名為 shiva-eks 的新使用者,以避免客戶端二進位制檔案和設定檔之間的衝突。
sudo useradd -c "Shiva AWS EKS User" -s /bin/bash -m -k /etc/skel -G sudo shiva-eks
建立新使用者後,可以選擇為其設定密碼或將 SSH 金鑰新增到 ~/.ssh/authorized_keys 檔案中,以便使用該使用者登入。
安裝和設定 AWS CLI v2
要開始使用 AWS CLI,首先需要安裝 AWS CLI v2。詳細的安裝步驟可參考 AWS 官方檔案:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html。
基本安裝步驟
- 下載安裝套件
- 解壓縮安裝套件
- 執行安裝
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt install unzip -y # 如果需要安裝 unzip
unzip awscliv2.zip
sudo ./aws/install
aws --version
執行 aws --version 命令以驗證 AWS CLI 是否安裝成功。
內容解密:
curl命令用於下載 AWS CLI 的安裝套件。unzip用於解壓縮下載的套件。sudo ./aws/install執行安裝指令碼。aws --version檢查 AWS CLI 的版本,確認安裝成功。
安裝和設定 kubectl 程式
kubectl 是用於與 Kubernetes 叢集互動的命令列工具。安裝步驟如下:
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.4/2023-08-16/bin/linux/amd64/kubectl
mkdir bin
chmod 755 kubectl; mv kubectl bin/
export PATH=~/bin:$PATH
驗證 kubectl 安裝
which kubectl
kubectl version --short
內容解密:
curl命令下載kubectl二進位制檔案。chmod 755 kubectl設定執行許可權。export PATH=~/bin:$PATH將kubectl所在的目錄新增到系統 PATH 中。kubectl version --short檢查kubectl版本,驗證安裝是否成功。
安裝和設定 eksctl 程式
eksctl 是一個簡化的命令列工具,用於建立和管理 Amazon EKS 中的 Kubernetes 叢集。
安裝 eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
內容解密:
curl命令下載eksctl的壓縮檔案並解壓到/tmp目錄。sudo mv /tmp/eksctl /usr/local/bin將eksctl移動到/usr/local/bin目錄,使其可以在系統範圍內使用。eksctl version檢查eksctl的版本,確認安裝成功。
未來方向
後續章節將探討如何使用這些工具來管理 EKS 叢集,包括佈署應用程式、管理節點群組和設定叢集存取控制等。敬請期待。
安全性考量
在使用 aws cli、kubectl 和 eksctl 等工具時,需要注意安全性問題。例如,應妥善保管 AWS 憑證和 SSH 金鑰,避免將其暴露在不安全的環境中。此外,定期更新這些工具至最新版本,以確保獲得最新的安全修補程式。
效能最佳化
在操作 EKS 叢集時,效能最佳化是一個重要的考量。透過監控叢集資源使用情況,可以及時調整節點群組的大小和組態,以確保應用程式的效能和穩定性。
圖表翻譯:
此圖示展示了EKS叢集管理流程的主要步驟,包括建立新使用者、安裝和設定必要的命令列工具等。
graph LR
A[建立新使用者] --> B[安裝 AWS CLI]
B --> C[安裝 kubectl]
C --> D[安裝 eksctl]
D --> E[組態 EKS 叢集存取]
圖表翻譯: 此圖示清晰地展示了管理 EKS 叢集的主要步驟,從建立新使用者開始,逐步安裝和設定必要的命令列工具,最終組態 EKS 叢集的存取。每一步驟都按照邏輯順序排列,確保流程的連貫性和可讀性。