在雲端環境中管理 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 的身份。
  • 傳回的 UserIdAccountArn 資訊確認了當前使用者的身分和所屬的 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叢集。

  1. 登入AWS管理主控台,導航到IAM服務。
  2. 建立新的IAM群組,例如EKSAdminGroup
  3. 將必要的策略附加到該群組,例如AmazonEKSClusterPolicyAmazonEKSServicePolicy
  4. 建立新的IAM使用者,並將其新增到剛才建立的群組中。

建立EKS叢集

現在,我們可以開始建立EKS叢集。

  1. 導航到EKS服務,點選「建立叢集」。
  2. 輸入叢集名稱,例如myeks01
  3. 選擇Kubernetes版本和其他相關設定。
  4. 在「叢集管理員角色」部分,選擇剛才建立的IAM角色。
  5. 點選「建立叢集」按鈕。

檢視叢集資訊

一旦叢集建立完成,我們可以檢視叢集的詳細資訊。

  • 叢集概述:顯示叢集的一般資訊,如名稱、狀態、Kubernetes版本等。
  • API伺服器和稽核日誌:啟用API伺服器和稽核日誌功能,這些功能對於監控和除錯叢集非常重要。
  • 更新歷史:顯示叢集的更新歷史,可以用來追蹤對叢集管理階層所做的變更。

新增計算節點到叢集

要讓叢集能夠執行工作負載,我們需要新增計算節點。

建立節點群組

  1. 導航到EKS服務,選擇剛才建立的叢集。
  2. 點選「計算」標籤,然後點選「新增節點群組」按鈕。
  3. 輸入節點群組的名稱,例如myEKSNodeGroup01

建立節點IAM角色

  1. 開啟IAM服務,導航到「角色」頁面。
  2. 點選「建立角色」,選擇「AWS服務」作為信任實體。
  3. 選擇「EC2」作為使用案例。
  4. 附加必要的策略到該角色,例如AmazonEKS_CNI_PolicyAmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnly
  5. 為角色命名,例如myAWSEKSNodeRole

組態節點群組

  1. 傳回到建立節點群組的頁面,選擇剛才建立的IAM角色。
  2. 選擇適當的例項型別,例如t3a.medium
  3. 組態節點群組的擴充套件設定,例如最小、最大和期望的節點數量。
  4. 點選「建立節點群組」按鈕。

驗證節點群組建立

一旦節點群組建立完成,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 clieksctl 程式。

建立新的 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。

基本安裝步驟

  1. 下載安裝套件
  2. 解壓縮安裝套件
  3. 執行安裝
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:$PATHkubectl 所在的目錄新增到系統 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/bineksctl 移動到 /usr/local/bin 目錄,使其可以在系統範圍內使用。
  • eksctl version 檢查 eksctl 的版本,確認安裝成功。
未來方向

後續章節將探討如何使用這些工具來管理 EKS 叢集,包括佈署應用程式、管理節點群組和設定叢集存取控制等。敬請期待。

安全性考量

在使用 aws clikubectleksctl 等工具時,需要注意安全性問題。例如,應妥善保管 AWS 憑證和 SSH 金鑰,避免將其暴露在不安全的環境中。此外,定期更新這些工具至最新版本,以確保獲得最新的安全修補程式。

效能最佳化

在操作 EKS 叢集時,效能最佳化是一個重要的考量。透過監控叢集資源使用情況,可以及時調整節點群組的大小和組態,以確保應用程式的效能和穩定性。

圖表翻譯:

此圖示展示了EKS叢集管理流程的主要步驟,包括建立新使用者、安裝和設定必要的命令列工具等。

  graph LR
    A[建立新使用者] --> B[安裝 AWS CLI]
    B --> C[安裝 kubectl]
    C --> D[安裝 eksctl]
    D --> E[組態 EKS 叢集存取]

圖表翻譯: 此圖示清晰地展示了管理 EKS 叢集的主要步驟,從建立新使用者開始,逐步安裝和設定必要的命令列工具,最終組態 EKS 叢集的存取。每一步驟都按照邏輯順序排列,確保流程的連貫性和可讀性。