【发布时间】:2024-01-20 16:29:01
【问题描述】:
我有一个带有应用负载均衡器的 EKS 集群,并为每个应用环境设置了目标组。在我的集群中,我正在从存储在私有 ECR 存储库中的基本 docker 映像构建我的应用程序。我已经确认我的 Pod 能够从私有 ECR 存储库中提取,因为我设置了一个秘密以允许提取私有 ECR 映像。我在基本 docker 映像能够在目标组中进入健康状态时遇到问题。我在部署中更新到 containerPort 以匹配目标组的端口。我不确定这是否需要配置。下面是我为这个命名空间定义一切的方式。我也有用于基本映像的 dockerfile。任何关于如何让基础 Docker 映像进入健康状态以构建我的应用程序的建议都会有所帮助。
dev.yaml
---
apiVersion: v1
kind: Namespace
metadata:
name: dev
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: dev
name: dev-deployment
spec:
selector:
matchLabels:
app.kubernetes.io/name: dev-app
replicas: 2
template:
metadata:
labels:
app.kubernetes.io/name: dev-app
spec:
containers:
- name: dev-app
image: xxxxxxxxxxxx.dkr.ecr.us-east-2.amazonaws.com/private/base-docker-image:latest
imagePullPolicy: Always
ports:
- containerPort: 30411
imagePullSecrets:
- name: dev
---
apiVersion: v1
kind: Service
metadata:
namespace: dev
name: dev-service
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
type: NodePort
selector:
app.kubernetes.io/name: dev-app
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: dev
name: dev-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: dev-service
servicePort: 80
---
dockerfile
FROM private/base-docker-image:latest
COPY . /apps
WORKDIR /apps
RUN npm run build
ENV ML_HOST=$HOST ML_PORT=$PORT ML_USER=$USER ML_PASSWORD=$PASSWORD
CMD ["npm", "run", "dockerstart"]
【问题讨论】:
-
您的服务 targetPort 应设置为部署 yaml 建议的应用程序打开的端口 30411。解决了吗?
-
非常感谢!
标签: docker kubernetes amazon-eks aws-application-load-balancer amazon-ecr