注:原文见 https://www.netmesh.cn/posts/k8s/eks/

Amazon EKS 是一种托管服务,让您能够轻松地运行Kubernetes AWS 无需安装、操作和维护您自己的Kubernetes控制平面或节点。
Kubernetes 是一个用于实现容器化应用程序的部署、扩展和管理的自动化的开源系统。

  1. eks介绍

Amazon EKS 是一种托管服务,让您能够轻松地运行Kubernetes AWS 无需安装、操作和维护您自己的Kubernetes控制平面或节点。

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jZaejxwI0mUl8XgJ1ZtVeQA709DvcL8TcONkiaXutRRltHmiaMDZxibg5g/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

Kubernetes 是一个用于实现容器化应用程序的部署、扩展和管理的自动化的开源系统。

Amazon EKS 与许多 AWS 为您的应用提供可扩展性和安全性的服务,包括:

Amazon ECR for container images 容器镜像服务器,翻译为中文就是docker仓库

Elastic Load Balancing for load distribution 分布式的弹性负载均衡,类似阿里云和腾讯云的LB服务,也有内网和公网的

IAM for authentication 认证方面和k8s的RBAC相结合,可以细粒度控制K8s各种角色,统一在IAM中集中管控

Amazon VPC for isolation 通过VPC的隔离多个k8s集群,互不干扰

Amazon EKS 为每个集群运行一个单租户 Kubernetes 控制层面,控制层面基础设施不在集群或 AWS 账户之间共享。

eks是aws的云上kubernetes解决方案,eks是弹性elastic kubernetes service的缩写。
和国内阿里云的ake和腾讯云的tke是一样的产品。

  1. eks组成

1.计算控制平面 2.计算平面

  1. 安装前期准备

整体流程:

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawH5q1DBKTkIYB5jCYSUchHrdibINaWgc8E68ZbUZ2A3WAG9mYpNl7a735gJabNM433scQk6gyt7GZQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  1. 1.aws-cli安装
  2. 2.aws凭证配置
  3. 3.vpc创建
  4. A.创建k8s的专有vpc

网络整体topo结构:

创建vpc为172.19.0.0/16 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jdAC1BLuz2IMSibgMelibwYr3dqAp279PCzDEhaoS76zEETETjFU6OqpQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 创建后状态

  1. B.创建子网

区域1a 的子网172.19.1.0/24 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jgqZPgQq3M9RI9TTsVdMxdn2nIG22Vax3rarg0rbjmHq1DOM7sFCvgQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 区域1b 的子网172.19.2.0/24 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jFOOu3zgeGHPibf5BtPM63aVnJQnFV6Dvia8ndecXvK34ibibY8dsgqz3BQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 区域1c 的子网172.19.3.0/24 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jVr9yz0Fr3OJFicN1OHUNia4OiaYhVibCzBRzEQGtwxmvc841RUAshIwAicg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 创建好的子网设定子网路由表都为igw网关。因为我们服务需要启用istio以及lb等。所以我们这里所有子网都属于公有子网路由。

创建路由表

  1. C.创建IGW网关

创建IGW网关

定义igw名称 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jVmVlZLexaWnlIM1TX9M8ibL8LbHmaIuuqYibNMvKmWkibK3nicAYn9AHUg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 附加到vpc网关附加到vpc附加成功后,就关联完毕了。

  1. 创建路由和子网绑定

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jicfAgicrDE0UETU8iaiaORcbLbShib7E2HcD97dC8c5KsJNZyWjz0RY49cQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jmXN1HCN1ibzSjeVv6y5BCTywP7iaRu9WknKrwKKvYrLqicpjZjk1JrkbA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 选择编辑路由

添加路由,0.0.0.0/0 选择Internet Gateway注意选择 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jw85b8hkmgnqLESDdHYN7AfiamhP3yfhTs2sbaQJrMhUzgediaPHV1kWg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 选择后会出现,已有的igw保存后 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jEgOxsDfdMqfrLSTyrJLFFeee7rUyY1GNibyM6UkibvbIoMEiaORaZjEhA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

至此VPC和路由设置完毕!

  1. eks集群创建

设置好集群名称,选择好k8s版本以及角色角色创建看下一节设置相关选项,比如子网跨区、安全组、节点属性为公有,以及集群名称等。 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jyKCgyCwpPY7YxuwXQq9mWdDSzLvhoqwTq0MGQYl8yfwEbR3nQ4VStw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 然后下一步 配置日志记录等。我这里就不打开了,测试用。总览然后点创建 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7j6uCP4jheZeG10yVcN10iaKvKQDk4mEtWUX3XkYIdSibyAQSa1njzVCmw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 等待控制平面创建完毕!这个时间可以配置aws-cli ~/.aws/config 如下图所示: https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jDF15swJWsltdt1pZ2RWJGVicgFVMNF8mG0GkBqicpYqERv3qyXy7Lb2A/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 测试配置 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7j4ZgPLIEdh8Fqia89c2M8y9eibvNnJ2blwgSnkB033pmfm3jHpoGdLbFw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  1. 角色创建
  2. 集群角色创建

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jGOxVtDl3dleibh1K0jg6ia0ARjN4BM09Jvib8xbgNBFHEeYBleGoeC1Bw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

产品选择eks使用案例选择eks-cluster然后下一步 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jh7XuKqPrMnWUdRwYNohaooILAAho6TGKpfq9II9yRjE58S9TFQdtBg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 完成角色创建

  1. 节点组角色创建

IAM中创建节点组角色 需要下面3种角色权限 AmazonEKSWorkerNodePolicy AmazonEKS_CNI_Policy AmazonEC2ContainerRegistryReadOnly

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jjWicib7mp5BoC5Id9M4mOvkBa7ArFvfY2foPYUWjsN4IjRYYBkeKHiaEQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

  1. 创建集群
  2. 生成kubeconfig

使用下面的模板生成kubeconf
aws eks –region region-code update-kubeconfig –name cluster_name
#我这里是下面的命令生成,生成前请备份~/.kube/config
aws eks –region ap-east-1 update-kubeconfig –name sklinux-k8s

https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jeBsPtkvPlrmVTGibbjfkPqVjOOcNK7jmicbyZu1OtofUffCQyvM7hL9g/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 查看控制平面情况

  1. 添加计算节点组

创建的时候选择子网分布、是否允许远程访问以及密钥、节点组角色等节点组角色选择上面创建的节点组角色即可。比如下面这样: https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7j8uBkNqd5z7GTy2CJcoWKT8ZeNlwpJtl2fBYwzZUSoc7fDMTDATfIqA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 然后选择节点ec2实例类型规格实例类型很多 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jwUANs5ggXmlNyicEhIsmEbic5m1iaWrpdggNgGicficjmxCib1kpF8j2bMxQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 AMI选择节点镜像,默认即可 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jGbu6Mq5hHDP54focU3IhJZibXByeVuWkHbVexcLKOBichUycfG4ZWicuQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 设置节点组大小,这个数量随时可以更改扩容 https://mmbiz.qpic.cn/mmbiz_png/Fjo8uGS9iawFdDLILYtgLey1LVVUpFr7jnKLk7MpngZMNVlXO4g7cV5OJRiaUA5udCdJFoDojJhv4eySD1J0LicOw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 开始创建可以看见正在创建。一个集群下可以创建多种不同配置的节点计算组加入集群,以适配各种计算和存储需求。

等待节点加入sklinux-k8s集群。

  1. 安装完毕

然后就是熟悉的k8s味道了~

操作模式和一般自己搭建的k8s集群是一样的操作,eks是和社区保持一致,服务调度、编排方面无特殊差异。

eks在CNI方面做了一些优化,pod覆盖网络不需要自己去更改使用flannel或者是calico什么的。

aws使用ENI+vpc的子网弹性网卡做了pod到pod之间的全互联网络。

By larryonaws

10多年大型企业软件研发管理经验,曾就职于爱立信、汤森路透、甲骨文、亚马逊AWS等公司。丰富的企业软件项目管理、架构设计、开发测试、交付运维、客户成功、大客户销售等职业经历。 有多年管理PeopleSoft/Fusion SaaS ERP套件研发工作的经历,对大型ERP软件有深刻的理解和丰富的经验。 AWS解决方案专业架构师,致力于推动AWS创新技术赋能企业软件的云转型。

发表评论

邮箱地址不会被公开。 必填项已用*标注