aws EKS fargate 集群入坑指南

0x00 TLNR;

本文描述的一些场景如下, 可对号入座选择是否需要继续往下看 ^_^

假定我们已经创建了一个VPC,同时已经在这个VPC下面创建了一些PAAS服务, 比如数据库等资源.
此时, 我们希望在相同的VPC下面创建一个集群,方便在里面运行的Pod可以顺利访问相关数据服务.
为了减少后期运维成本, 我们使用全托管模式的K8s集群方案:  fargate模式的EKS

0x01 基本概念:

下图是EKS要求的最低配置的网络集群拓扑图:


网络架构图
  • 公网网关(Internet Gateway)
VPC中需要对外提供接口服务时, 需要创建的第一个对象. 负责进出两个方向的流量请求.
  • 子网(Subnet)
如上图所示, 我们需要用到4个子网, 注意创建时,需要对应不同的可用区.
同时, 需要手动打开子网上的 自动分配IPv4的能力 
同时添加相应的标签:
公用子网: kubernetes.io/role/elb: 1
私有子网: kubernetes.io/role/internal-elb: 1

  • 路由表
负责目标IP的流量向什么目标发启请求, 主要有两个配置项:
- 关联子网: 定义了数据来源
- 路由表: 定义数据流到什么地方去
子网关联.png
路由.png
  • NAT 网关
用于对私有网络(内部网络)提供地址转换能力.
注意在创建NAT网关的时候, 选择Public, 同时, 要选择一个公网子网.
NAT网关.png
  • DMZ
如本文首页图片所示, DMZ下面的子网中, 一般用于创建nginx等纯数据转换的网络应用.
反之,一般会把真正的后台业务应用, 部署到私有子网下面.

0x02 创建集群

先准备一个配置文件: cluster.yml

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-name
  region: us-west-2

vpc:
  id: "vpc-id"
  subnets:
    private:
      us-west-2a:
          id: "subnet-0972711111"
      us-west-2b:
          id: "subnet-0e0fad2222"
    public:
      us-west-2a:
          id: "subnet-093233333"
      us-west-2b:
          id: "subnet-0a9506444"

fargateProfiles:
  - name: fp-default
    selectors:
      # All workloads in the "default" Kubernetes namespace will be
      # scheduled onto Fargate:
      - namespace: default
      # All workloads in the "kube-system" Kubernetes namespace will be
      # scheduled onto Fargate:
      - namespace: kube-system
      - namespace: sit
      - namespace: prod

使用eksctl创建集群, 同时指定了fargate模式:
eksctl create cluster -f cluster.yml

关于fargate 配置信息, 简单说一下:
在集群相应的namespace下部署的内容, 会部署到EKS自己维护的Node上面,
这个Node对我们用户来说, 是透明的.

后记

集群创建完成后, 更新本地kubectl config 信息:
aws eks update-kubeconfig --name cluster-name
此时,就可以用kubectl命令进行远程集群操作了.

参考链接:
https://eksctl.io/usage/vpc-networking/

你可能感兴趣的:(aws EKS fargate 集群入坑指南)