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