首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将库伯奈特斯的负载平衡器组合起来?

如何将库伯奈特斯的负载平衡器组合起来?
EN

Stack Overflow用户
提问于 2020-03-20 21:38:54
回答 1查看 100关注 0票数 0

对于我的HTTP/REST服务集群,我有以下Kubernetes YAML,是否有一种方法可以通过相同的负载均衡器公开标识、用户和操作服务?

在下面的配置中,它在AWS中创建了4个单独的弹性负载平衡器,我认为1就足够了。我尝试将Kibana设置为NodePort,这样我可以在外部访问它,但是我无法访问它,所以我将类型设置为LoadBalancer。

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: identity-service
  labels:
    app: identity-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: identity-service
  template:
    metadata:
      labels:
        app: identity-service
    spec:
      containers:
        - name: identity-service
          image: org_name/identity_service
          imagePullPolicy: Always
          ports:
            - containerPort: 5000
          env:
            - name: CONNECTION_STRING
              value: "..."
      imagePullSecrets:
        - name: docker-hub
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: users-service
  labels:
    app: users-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: users-service
  template:
    metadata:
      labels:
        app: users-service
    spec:
      containers:
        - name: users-service
          image: org_name/users_service
          imagePullPolicy: Always
          ports:
            - containerPort: 5001
          env:
            - name: CONNECTION_STRING
              value: "..."
      imagePullSecrets:
        - name: docker-hub
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: actions-service
  labels:
    app: actions-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: actions-service
  template:
    metadata:
      labels:
        app: actions-service
    spec:
      containers:
        - name: actions-service
          image: org_name/actions_service
          imagePullPolicy: Always
          ports:
            - containerPort: 5003
          env:
            - name: CONNECTION_STRING
              value: "..."
      imagePullSecrets:
        - name: docker-hub
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: message-queue
  labels:
    app: message-queue
spec:
  replicas: 1
  selector:
    matchLabels:
      app: message-queue
  template:
    metadata:
      labels:
        app: message-queue
    spec:
      containers:
        - name: message-queue
          image: org_name/message_queue
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5672
            - containerPort: 15672
      imagePullSecrets:
            - name: docker-hub
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels:
      app: elasticsearch
  template:
    metadata:
      labels:
        app: elasticsearch
    spec:
      containers:
        - name: elasticsearch
          image: elasticsearch:7.6.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 9200
          env:
            - name: ELASTIC_PASSWORD
              value: ...
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kibana
  template:
    metadata:
      labels:
        app: kibana
    spec:
      containers:
        - name: kibana
          image: kibana:7.6.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5601
          env:
            - name: ELASTICSEARCH_HOSTS
              value: http://ELASTICSEARCH_SERVICE_HOST:ELASTICSEARCH_SERVICE_PORT
            - name: ELASTICSEARCH_USERNAME
              value: elastic
            - name: ELASTICSEARCH_PASSWORD
              value: ...
            - name: XPACK_MONITORING_ENABLED
              value: "true"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: smtp-server
  labels:
    app: smtp-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: smtp-server
  template:
    metadata:
      labels:
        app: smtp-server
    spec:
      containers:
        - name: smtp-server
          image: mailhog/mailhog
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 1025
            - containerPort: 8025
---
apiVersion: v1
kind: Service
metadata:
  name: identity-service
  labels:
    app: identity-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-2:...:certificate/...
spec:
  ports:
    - port: 443
      targetPort: 5000
      protocol: TCP
  selector:
    app: identity-service
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: users-service
  labels:
    app: users-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-2:...:certificate/...
spec:
  ports:
    - port: 443
      targetPort: 5001
      protocol: TCP
  selector:
    app: users-service
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: actions-service
  labels:
    app: actions-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-2:...:certificate/...
spec:
  ports:
    - port: 443
      targetPort: 5003
      protocol: TCP
  selector:
    app: actions-service
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: kibana
  labels:
    app: kibana
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-2:...:certificate/...
spec:
  ports:
    - port: 5601
      targetPort: 5601
      protocol: TCP
  selector:
    app: kibana
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-west-2:...:certificate/...
spec:
  ports:
    - port: 9200
      targetPort: 9200
      protocol: TCP
  selector:
    app: elasticsearch
  type: ClusterIP
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-20 22:46:11

使用单个入口控制器使用入口定义公开每个服务。在AWS上,您可以使用ALB作为入口端点

每个服务都需要一个不同的主机名或/path来区分它们。

代码语言:javascript
运行
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /identity
        backend:
          serviceName: identity-service
          servicePort: 5000
      - path: /users
        backend:
          serviceName: users-service
          servicePort: 5001
      - path: /actions
        backend:
          serviceName: actions-service
          servicePort: 5003
      - path: /kibana
        backend:
          serviceName: kibana
          servicePort: 5601

然后将每个服务的type更改为ClusterIP

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60781956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档