[英]Unable to run an angular app on kubernetes
我开发了一个 angular 应用程序,它在本地运行良好。 然后我创建了一个 docker 映像,该映像在 docker 环境中也运行良好。 现在我正在尝试将映像部署为 Kubernetes 集群中的服务。 它显示 pod 正在运行,但是我无法访问该应用程序。 最初我尝试通过nodeport
运行应用程序。 当它不起作用时,我尝试使用loadbalancer
,但它总是将EXTERNAL-IP
显示为待处理。
这是我的详细信息:
nginx-custom.conf
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/json max;
application/javascript max;
~image/ max;
}
server {
listen 4200;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
expires $expires;
gzip on;
}
Dockerfile
# Stage 1 , "build-step",
FROM node:12.16-alpine as build-step
RUN mkdir -p /app
WORKDIR /app
COPY package*.json /app/
RUN npm install
COPY . /app
RUN npm run build -- --output-path=./dist/out --configuration $configuration
# Stage 2
FROM nginx:1.17.1-alpine
COPY --from=build-step /app/dist/out/ /usr/share/nginx/html
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
部署.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: login-ui
version: v1
name: login-ui
spec:
strategy: # Default, so usually not specified
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 25%
replicas: 1
selector:
matchLabels:
app: login-ui
version: v1
template:
metadata:
labels:
app: login-ui
version: v1
spec:
containers:
- image: "tagged-image"
imagePullPolicy: Always
name: login-ui
ports:
- name: httpport
containerPort: 4200
#hostPort: 4200
服务.yaml
---
apiVersion: v1
kind: Service
metadata:
labels:
app: login-ui
version: v1
name: login-ui
spec:
ports:
- name: http
port: 4200
protocol: TCP
selector:
app: login-ui
version: v1
type: NodePort
kubectl 获取 pod
NAME READY STATUS RESTARTS AGE
login-ui-7445d644f6-n7d5m 1/1 Running 0 33m
kubectl 获取 svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
login-ui NodePort XX.XX.XX.XX <none> 4200:31475/TCP 33m
kubectl 描述 pod login-ui
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> Successfully assigned default/login-ui-7445d644f6-n7d5m to node01-vm
Normal Pulling 38m kubelet, node01-vm Pulling image "tagged-image"
Normal Pulled 37m kubelet, node01-vm Successfully pulled image "tagged-image" in 5.401860205s
Normal Created 37m kubelet, node01-vm Created container login-ui
Normal Started 37m kubelet, node01-vm Started container login-ui
之后,我尝试通过以下方式访问浏览器:
http://"my-node-ip":4200/
但我收到无法连接的错误。 此外,当我尝试检查 pod 日志时,那里没有日志。 其他吊舱在那里运行良好。 我可以看到其他 pod 的日志,并且能够从浏览器访问应用程序。
您需要 kubectl get service output 中的第二个端口号。
尝试:
http://any-k8s-node.example.com:31475
除非您有LoadBalancer
类型的服务并且您的集群知道如何填充该字段,否则不会填写EXTERNAL-IP
字段(公共云 Kubernetes 安装可能会;minikube 可能不会)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.