【问题标题】:Single YAML file with multiple load balancers and pods具有多个负载均衡器和 pod 的单个 YAML 文件
【发布时间】:2021-09-30 22:31:00
【问题描述】:

我有一个 yaml 文件,我试图在其中部署 2 个负载均衡器,每个负载均衡器都有一个 pod 和容器。

但是,当我运行以下 Infrastructure.yml 文件时,它会启动 2 个负载平衡器,并且只有 1 个 pod/容器 (job-base)。它忽略了启动api-base pod / 容器。从文件中注释掉 job-base 作业/容器,api-base pod 可以正常启动。

我错过了什么?如何获取这个文件来部署所有 pod 和服务?

kind: ConfigMap
apiVersion: v1
metadata:
  name: api-base
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-base
spec:
  replicas: 1
  selector:
    matchLabels:
      app: api-base
  template:
    metadata:
      labels:
        app: api-base
    spec:
      containers:
      - name: api-base
        image: path/to/apiImage
        ports:
        - containerPort: 44360
          protocol: TCP
        resources:
          requests:
            memory: "0.4Gi"
            cpu: "0.2"
          limits:
            memory: "0.4Gi"
            cpu: "0.2"
---
apiVersion: v1
kind: Service
metadata:
   name: api-base
   labels:
      app: api-base
   annotations:
      service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
spec:
   selector:
      app: api-base
   ports:
    - port: 80
      targetPort: 44360
      protocol: TCP
   type: LoadBalancer
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: job-base
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: job-base
spec:
  replicas: 1
  selector:
    matchLabels:
      app: job-base
  template:
    metadata:
      labels:
        app: job-base
    spec:
      containers:
      - name: job-base
        image: path/to/jobImage
        ports:
        - containerPort: 44360
          protocol: TCP
        resources:
          requests:
            memory: "0.4Gi"
            cpu: "0.2"
          limits:
            memory: "0.4Gi"
            cpu: "0.2"
---
apiVersion: v1
kind: Service
metadata:
   name: job-base
   labels:
      app: job-base
   annotations:
      service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
spec:
   selector:
      app: job-base
   ports:
    - port: 80
      targetPort: 44360
      protocol: TCP
   type: LoadBalancer

更新:

如果无法在单个 yml 中完成此操作,我还会考虑使用相同的负载均衡器在同一个 pod 中运行 apijob 容器。只要我可以将 pod 中的每个容器暴露在不同的端口上。

【问题讨论】:

  • 您是否尝试过分离部署?例如api-base.yamljob-base.yaml
  • 由于我的要求,我仅限于这个单一的基础设施.yml。我也尝试过拥有一个带有多个容器的 pod。但是,我不确定如何使用单个 pod 内的负载均衡器公开每个容器。我也会接受如何做到这一点的答案。
  • 我看不出它不应该工作的原因。应用该 yaml 文件时,您需要对情况进行故障排除/提供更多详细信息。是否都创建了两个部署?是否创建了副本集?部署/副本中是否有任何事件?
  • 您能添加更多信息/日志吗?当您kubectl apply您的单个文件时会打印什么?是否已创建部署 (kubectl get deployment)?如果是,则执行kubectl describe分析问题所在。

标签: kubernetes kubernetes-pod


【解决方案1】:

命名空间没有分配足够的资源。当尝试配置新容器时,它会因 CPU 或内存限制而失败并终止。

我通过运行以下命令发现了问题

kubectl get deployment api-base -o yaml

这会输出一个message 属性,表明最近的部署由于资源问题而失败。

增加命名空间 ResourceQuota 解决了这个问题:https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2014-06-08
    • 2019-01-02
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多