背景一:利用EKS搭建一个简单的pod服务,首先通过route53,将制定的域名例如:example.com转发到ALB,在ALB上面利用443或者80端口接收流量,再转发到后端制定pod的制定端口上。
一、准备相应的EKS集群,如果没有EKS集群,请查看我之前的文章《创建EKS集群》。
二、本次ALB要通过443端口https接收流量,需要先创建一个ssl证书,进行绑定,在AWS控制台进行创建。
选择你需要使用的域名,和验证的方式,如果域名在账号下有创建,使用DNS验证更加方便。
进行域名验证后,等到成功。
三、创建ALB类型的service。
注意:这里不需要手动创建ALB,因为控制台创建ALB时,需要配置后端目标,很是麻烦。
apiVersion: v1
kind: Service
metadata:
name: my-alb-service
annotations:
# 指定使用 ALB 类型的 Service
service.beta.kubernetes.io/aws-load-balancer-type: "alb"
# 指定监听器的 SSL 证书 ARN
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "<your-certificate-arn>"
# 指定监听器在连接空闲时的超时时间(可选)
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
# 指定监听器监听的 SSL 端口
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
spec:
type: LoadBalancer
ports:
- port: 443 # Service 监听的端口为 443
targetPort: 80 # 转发到 Pod 的端口为 80
selector:
app: my-app # 选择器,匹配 Pod 的标签
把刚才创建的证书ARN替换进去后,执行命令:
kubectl apply -f my-alb-service.yaml
可以再控制台负载均衡看到所创建的ALB类型的service:
三、创建后端的POD。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: my-app
spec:
replicas: 3 # 初始副本数量
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx-container
image: nginx:latest # 使用最新版的 Nginx 镜像
ports:
- containerPort: 80 # 容器内部监听的端口
resources:
requests:
cpu: 100m
memory: 200Mi
limits:
cpu: 500m
memory: 500Mi
执行Yaml文件:
kubectl apply nginx-deployment.yaml
四、Route 53 将域名转发到ALB
五、测试
可以分别进入每个Nginx的Pod去替换页面文件,比如:
最后的实验效果: