iT邦幫忙

0

Kubernetes - AWS EKS 建立 pod 遇到的坑

  • 分享至 

  • xImage
  •  

Introduction

最近在處理關於k8s的問題
練習架構一個真實的主機來處理
不是只靠互動式教學玩玩,自己建立 cluster 其實蠻簡單的
而且用 cloud k8s 其實體驗很好,因為會幫你把複雜的 json 美化成 GUI 用
而且還有整合指令,說實話是很輕鬆

步驟

  1. 安裝 Homebrew,macOS 必裝神器,這連 AWS 官方的安裝指引都在用...
  2. 安裝 kubectl
    https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/install-kubectl.html
  3. 安裝 eksctl
    https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/eksctl.html
  4. 用 eksctl create cluster,如果你想用 kubectl 自己搞也是可以...但是我放棄,這次實驗室用 farget 處理的,沒有 instance
    https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/getting-started-eksctl.html
  5. 部署範例應用程式
    https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/sample-deployment.html

問題

如果你照著教學指引,你會發現 pod 是 pending 而且有 error message

0/2 nodes are available: 2 node(s) had untolerated taint {eks.amazonaws.com/compute-type : fargate}. preemption: 0/2 nodes are available: 2 Preemption is not helpful for scheduling.

解決方法

  1. 建立 farget profile
    https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html
  2. 建立 node group
    https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node

我解決的方法是建立 farget profile,後來才了解是因為

Pod 執行角色:當您的叢集在 AWS Fargate 上建立 pods 時,在 Fargate 基礎設施上執行的 kubelet 必須代表您呼叫 AWS API。例如,它必須透過呼叫從 Amazon ECR 提取容器映像。Amazon EKS pod 執行角色提供進行此類工作的 IAM 許可。

建立 Fargate 設定檔時,您必須指定要搭配 pods 使用的 pod 執行角色。此角色會新增至叢集的 Kubernetes 角色型存取控制 (RBAC),以進行授權。這是為了讓在 Fargate 基礎設施上執行的 kubelet 可以註冊到您的 Amazon EKS 叢集並作為節點出現在您的叢集中。如需更多詳細資訊,請參閱 Amazon EKS pod 執行 IAM 角色。

之後重新建立 pod 然後依照教學指引的指令就成功完成了
還好有support

Reference


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言