假定我们已经创建了一个VPC,同时已经在这个VPC下面创建了一些PAAS服务, 比如数据库等资源.
此时, 我们希望在相同的VPC下面创建一个集群,方便在里面运行的Pod可以顺利访问相关数据服务.
为了减少后期运维成本, 我们使用全托管模式的K8s集群方案: fargate模式的EKS
1、公网网关(Internet Gateway)
VPC中需要对外提供接口服务时, 需要创建的第一个对象. 负责进出两个方向的流量请求.
2、子网(Subnet)
如上图所示,我们需要用到4个子网,注意创建时,需要对应不同的可用区.同时,需要手动打开子网上的 自动分配IPv4的能力 同时添加相应的标签:公用子网:kubernetes.io/role/elb:1私有子网:kubernetes.io/role/internal-elb:1
3、路由表
负责目标IP的流量向什么目标发启请求, 主要有两个配置项:
- 关联子网: 定义了数据来源
- 路由表: 定义数据流到什么地方去
4、NAT 网关
用于对私有网络(内部网络)提供地址转换能力.注意在创建NAT网关的时候,选择Public,同时,要选择一个公网子网.
5、DMZ
如本文首页图片所示, DMZ下面的子网中, 一般用于创建nginx等纯数据转换的网络应用.
反之,一般会把真正的后台业务应用, 部署到私有子网下面.
6、先准备一个配置文件: cluster.yml
apiVersion:eksctl.io/v1alpha5kind:ClusterConfigmetadata:name:cluster-nameregion:us-west-2vpc: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-defaultselectors:# 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
集群创建完成后, 更新本地kubectl config 信息:
aws eks update-kubeconfig --name cluster-name
此时,就可以用kubectl命令进行远程集群操作了
参考:
https://eksctl.io/usage/creating-and-managing-clusters/