Amazon web services 如何将Kubernetes与现有AWS ALB集成?
我想在kubernetes设置中使用现有的AWS ALB。i、 e.我不希望alb入口控制器创建或更新任何现有AWS资源,即目标组、角色等 如何使ALB与Kubernetes集群通信,从而将请求传递给现有服务,并将响应返回给ALB以显示在前端Amazon web services 如何将Kubernetes与现有AWS ALB集成?,amazon-web-services,docker,amazon-ec2,kubernetes,microservices,Amazon Web Services,Docker,Amazon Ec2,Kubernetes,Microservices,我想在kubernetes设置中使用现有的AWS ALB。i、 e.我不希望alb入口控制器创建或更新任何现有AWS资源,即目标组、角色等 如何使ALB与Kubernetes集群通信,从而将请求传递给现有服务,并将响应返回给ALB以显示在前端 我尝试过,但它会为新的入口资源创建新的ALB。我想使用现有的。您基本上必须在Kubernetes吊舱运行的实例上打开一个节点端口。然后需要让ALB指向这些实例。有两种配置方法。要么通过吊舱,要么通过服务 要通过服务配置它,您需要指定.spec.ports[
我尝试过,但它会为新的入口资源创建新的ALB。我想使用现有的。您基本上必须在Kubernetes吊舱运行的实例上打开一个节点端口。然后需要让ALB指向这些实例。有两种配置方法。要么通过吊舱,要么通过服务 要通过服务配置它,您需要指定
.spec.ports[].nodePort
。在默认设置中,端口需要介于30000
和32000
之间。此端口在每个节点上打开,并将重定向到指定的POD(可能在任何其他节点上)。这有另一个缺点,即存在另一个跃点,在使用多AZ设置时,这也会花钱。示例服务可能如下所示:
---
apiVersion: v1
kind: Service
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
type: NodePort
selector:
app: my-frontend
ports:
- port: 8080
nodePort: 30082
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
replicas: 3
selector:
matchLabels:
app: my-frontend
template:
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
containers:
- name: nginx
image: "nginx"
ports:
- containerPort: 80
hostPort: 8080
要通过Pod配置它,您需要指定.spec.containers[].ports[].hostPort
。这可以是任何端口号,但它必须在调度Pod的节点上空闲。这意味着每个节点只能有一个Pod,它可能与其他应用程序的端口冲突。这样做的缺点是,从ALB的角度来看,并非所有实例都是健康的,因为只有具有该Pod的节点才接受流量。您可以添加一个在ALB上注册当前节点的sidecar容器,但这将意味着额外的复杂性。一个例子如下所示:
---
apiVersion: v1
kind: Service
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
type: NodePort
selector:
app: my-frontend
ports:
- port: 8080
nodePort: 30082
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
replicas: 3
selector:
matchLabels:
app: my-frontend
template:
metadata:
name: my-frontend
labels:
app: my-frontend
spec:
containers:
- name: nginx
image: "nginx"
ports:
- containerPort: 80
hostPort: 8080