【Day 25】建立 EKS on Outpost 的步骤(下)

tags: 铁人赛 AWS Outposts EKS Kubernetes

前情提要

  • 昨天把 EKS control plane 建好了
  • 今天要做的事情大概有
    1. 绑定 kubectl 指令操作 EKS
    2. 透过 CloudFormation 建立 worker node 的 node group
      • node group 指的是一组可以经过 auto scaling group 调度的 EC2 资源
    3. 透过 aws-auth.yaml 调整 ConfigMap
    4. 在 EKS 上部署

绑定 EKS 和 维运终端

新建立的丛集所配置的权限

  • 昨天有强调用 IAM User 去建立 EKS、不要用 Root Account
  • 因为建立这个 EKS 的丛集的 AWS User 或是 Role 会拿走 EKS cluster 的管理者身份、辣个 system:masters
  • 避免让那个快要离职的人来建立 EKS cluster
  • 我们稍後会说明如何让多个 IAM User 或 Role 可以同时成为丛集管理者

This IAM entity does not appear in the ConfigMap, or any other visible configuration, so make sure to keep track of which IAM entity originally created the cluster.

1. 接上指令

  • 丛集建立者,使用下列指令,取得 kube cluster 的指令维运管道
  • 先来看看我的丛集名称
  • 指令
    • 以下命令呼叫前提是,你已经装好 aws cli 和 kubectl
    • 如果还没装,可以回到前两天的文章,那边有连结
    aws eks --region ap-northeast-1 update-kubeconfig --name ironman-cluster --profile theprofilename
    
    • --region 後面加上 代表东京的那串
    • --profile 会去指定,呼叫 aws cli 命令时,要使用 ~/.aws/credentials 中的哪一组 AWS API Key/Secret 去存取
    • update-kubeconfig 会去对 ~/.kube/config 做配置档的写入,这个档案会纪录 kubectl 所能操作的丛集资讯、预设的丛集资讯
  • 确定指令可以送到 EKS 丛集

2. 以 CloudFormation 建立 worker node

  • 细节你可以参考文件:
  • 下载 yaml
    curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
    
  • 上传到 CloudFormation 上
  • 以及
  • 在这个别人都预先挖好洞的填空题里面,填上资料即可
    • 图一
    • 图二
  • 剩下的视你的需求调整;快转到建立按钮按下去之後...
  • 建置完成後,你可以在 EC2 的 console 中看到这个(群)机器;但是这群机器还没有办法被 cluster 所存取。
  • 去 IAM 看 Role,里面会看到 CloudFormation 帮你建立的角色
  • 撷取他的 ARN (下图反白处)
  • 贴到下方文件,取代掉那个 arn:aws:iam::999999999999:role/xxxx-NodeInstanceRole-XXXXXXXXXXXX
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::999999999999:role/xxxx-NodeInstanceRole-XXXXXXXXXXXX
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  • 上述设定,存成 aws-auth-ironman.yaml
  • 指令
    ❯ kubectl apply -f aws-auth-ironman.yaml
    configmap/aws-auth created
    
  • 详细说明可以看这篇: Launching self-managed Amazon Linux nodes
  • 看结果...等待
    ❯ kubectl get nodes --watch
    NAME                                             STATUS     ROLES    AGE   VERSION
    ip-10-56-3-130.ap-northeast-1.compute.internal   NotReady   <none>   0s    v1.17.17-eks-ac51f2
    
  • 好了!!
    ❯ kubectl get nodes
    NAME                                             STATUS   ROLES    AGE   VERSION
    ip-10-56-3-130.ap-northeast-1.compute.internal   Ready    <none>   81m   v1.17.17-eks-ac51f2
    

检查部署

  • Deployment 成功被部署到机器上
    ❯ kubectl get deployments --all-namespaces
    NAMESPACE     NAME      READY   UP-TO-DATE   AVAILABLE   AGE
    kube-system   coredns   2/2     2            2           22h
    
  • 如果没有 Work Node 或是运算资源不足的话,则可能会看到下列状态

3. ConfigMap 与 IAM User

  • 鹅城县长,原本是马邦德花钱买来的。
  • 马邦德走马上任鹅城县长,吃着火锅唱着歌,忽然就被麻匪给劫了!
  • 马邦德让张麻子担任这个鹅城县长、县长让马邦德当师爷。

让其他 IAM User 被配置丛集管理者权限

  • 如果丛集要由多个使用者共同管理,可以修改上面提到的设定档 aws-auth-ironman.yaml
    • 建议另存成一个新的档名,并且加入版本控制以方便管理
    • eks-admin 是另外一个 IAM 使用者

4. 部署 Pod / Service / Deployment 至 EKS

  • 那因为我今天时间不太够,我还是捡现成的东西来测测看。
  • 来看看 Deploy and Access the Kubernetes Dashboard
    • 把文件里面的 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 所部署的内容,下载下来看看,或是直接部署!

结论

  • 针对 Outposts 上部署 Worker node 的部分
    • 其实重点还是跟 ECS 或 EC2 雷同
    • 掌握好 Subnet 和 Security group 即可
  • Control plane 和 Worker node 断线期间,Pod 依然可以正常运作

Ref


<<:  [Day 29] 试验看看Regression方法

>>:  勒瑰恩谈写作 (2) 叙事观点和声音

Day19-Component

学习React过程中很重要的概念为组件化。 何谓组件化??? 重复使用 切割成更细小的碎片,达到耦合...

Day 11 - 阵列 a

简介- 为什麽要使用阵列? 当我们想要宣告一个变数的时候,我们可以一次叫一个 像是这样 #inclu...

Day20 - RB tree

大家好,我是长风青云。今天是铁人赛的20天,但我影片说错了QQ ...

Organizing Data

本篇同步发文於个人网站: Organizing Data This article referenc...

[区块链&DAPP介绍 Day2] 区块链技术介绍

今天来稍微简单介绍一下区块链的技术介绍。 我们可以谈谈为什麽区块链可以储存数据,不用害怕被篡改,就是...