基于AWS 搭建一个EKS集群
我们先简单了解一下EKS,Amazon Elastic Kubernetes Service(Amazon EKS)是一项托管服务,无需在 Amazon Web Services (AWS) 上安装、操作和维护自己的 Kubernetes 控制面板。Kubernetes 是一个开源系统,用于自动管理、扩展和部署容器化应用程序。
EKS初始化
VPC子网的构建
这里我们首先要配置第一项,VPC的构建。为什么要构建VPC,很简单,因为你的程序需要连接服务,没有网络如何进行连接!这里你也可以使用默认的VPC,没有要求。
如果想用自定义的VPC可以继续看,不需要的话可以跳过这一步
- 选择一个VPC,这里只介绍子网的构建。
使用Terraform ,快速构建,脚本内容如下:
# 创建ELK集群私有子网
resource "aws_subnet" "vpc_test_cluster_Subnet_Private_1" {
vpc_id = aws_vpc.public_vpc_test.id
map_public_ip_on_launch = true
cidr_block = "100.2.208.0/20"
availability_zone = data.aws_availability_zones.available.names[0]
tags = {
Name = "test-cluster/Subnet-Private-us-west-2a"
"kubernetes.io/cluster/test-cluster" = "owned"
"kubernetes.io/role/elb" = 1
}
}
resource "aws_subnet" "vpc_test_cluster_Subnet_Private_2" {
vpc_id = aws_vpc.public_vpc_test.id
map_public_ip_on_launch = true
cidr_block = "100.2.224.0/20"
availability_zone = data.aws_availability_zones.available.names[1]
tags = {
Name = "test-cluster/Subnet-Private-us-west-2b"
"kubernetes.io/cluster/test-cluster" = "owned"
"kubernetes.io/role/elb" = 1
}
}
# 创建ELK集群私有子网NAT
resource "aws_nat_gateway" "vpc_test_cluster_Subnet_Private_nat_1" {
connectivity_type = "private"
subnet_id = aws_subnet.vpc_test_cluster_Subnet_Private_1.id
tags = {
Name = "ngw_test_cluster_nat_1"
}
}
resource "aws_nat_gateway" "vpc_test_cluster_Subnet_Private_nat_2" {
connectivity_type = "private"
subnet_id = aws_subnet.vpc_test_cluster_Subnet_Private_2.id
tags = {
Name = "ngw_test_cluster_nat_2"
}
}
# 创建ELK集群私有子网路由表
resource "aws_route_table" "test_cluste_route_1" {
vpc_id = aws_vpc.public_vpc_test.id
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.vpc_test_cluster_Subnet_Private_nat_1.id
}
tags = {
Name = "test_cluste_route_1"
}
}
resource "aws_route_table" "test_cluste_route_2" {
vpc_id = aws_vpc.public_vpc_test.id
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.vpc_test_cluster_Subnet_Private_nat_2.id
}
tags = {
Name = "test_cluste_route_2"
}
}
# 创建ELK集群公有子网
resource "aws_subnet" "vpc_test_cluster_Subnet_Public_1" {
vpc_id = aws_vpc.public_vpc_test.id
map_public_ip_on_launch = true
cidr_block = "100.2.192.0/20"
availability_zone = data.aws_availability_zones.available.names[0]
tags = {
Name = "test-cluster/Subnet-Public-us-west-2a"
"kubernetes.io/cluster/test-cluster" = "shared"
"kubernetes.io/role/elb" = 1
}
}
resource "aws_subnet" "vpc_test_cluster_Subnet_Public_2" {
vpc_id = aws_vpc.public_vpc_test.id
map_public_ip_on_launch = true
cidr_block = "100.2.240.0/20"
availability_zone = data.aws_availability_zones.available.names[1]
tags = {
Name = "test-cluster/Subnet-Public-us-west-2b"
"kubernetes.io/cluster/test-cluster" = "shared"
"kubernetes.io/role/elb" = 1
}
}
2.执行
#初始化
terraform init
#执行
terraform apply
3.查看初始化结果
注意:
这个Tag信息是EKS初始化时会根据Tag的设置查找对应的子网
VPC中必带的Tag信息:
"kubernetes.io/cluster/hualai-cluster" = "shared"
"kubernetes.io/role/elb" = 1
IAM初始化
io/)