Introduction
最近在处理关于k8s的问题
练习架构一个真实的主机来处理
不是只靠互动式教学玩玩,自己建立 cluster 其实蛮简单的
而且用 cloud k8s 其实体验很好,因为会帮你把複杂的 json 美化成 GUI 用
而且还有整合指令,说实话是很轻鬆
步骤
安装 Homebrew,macOS 必装神器,这连 AWS 官方的安装指引都在用...安装 kubectlhttps://docs.aws.amazon.com/zh_tw/eks/latest/userguide/install-kubectl.html安装 eksctl
https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/eksctl.html用 eksctl create cluster,如果你想用 kubectl 自己搞也是可以...但是我放弃,这次实验室用 farget 处理的,没有 instance
https://docs.aws.amazon.com/zh_tw/eks/latest/userguide/getting-started-eksctl.html部署範例应用程式
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.
解决方法
建立 farget profilehttps://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html建立 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