Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何将Kubernetes与现有AWS ALB集成?_Amazon Web Services_Docker_Amazon Ec2_Kubernetes_Microservices - Fatal编程技术网

Amazon web services 如何将Kubernetes与现有AWS 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[

我想在kubernetes设置中使用现有的AWS ALB。i、 e.我不希望alb入口控制器创建或更新任何现有AWS资源,即目标组、角色等

如何使ALB与Kubernetes集群通信,从而将请求传递给现有服务,并将响应返回给ALB以显示在前端


我尝试过,但它会为新的入口资源创建新的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