我正在尝试在 K8s 集群上运行使用 Java、Jsp、Servlet、Angularjs 和 Jquery 开发的 Web 应用程序。 当登录到有 request.getCookies() 或 request.getSession() 命中的应用程序行时,它返回 null 然后它会抛出 NullPointerException。此异常不允许我登录应用程序。
我曾尝试使用 docker 在本地机器和 azure 上运行相同的应用程序,并且运行良好。这证实 image 中没有问题。以下命令用于在 docker 上运行,
docker run -p 8080:8080 <image_name>
我在 Azure(Azure kubernates 服务)上使用 k8s,以下是我使用的配置。
apiVersion: v1
kind: Service
metadata:
labels:
app: app
namespace: default
name: app
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
name: http
selector:
app: app
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 1
selector:
matchLabels:
app: app
strategy:
type: Recreate
template:
metadata:
labels:
app: app
spec:
containers:
- image: <image_name>
name: app
imagePullPolicy: Always
ports:
- containerPort: 8080
name: app
所有的pods、services和ingress都正常运行,没有重启也没有抛出任何异常。
我也尝试创建入口,但问题仍然存在。以下配置我用来创建入口,并在部署入口之前将 service.spec.type 更改为 NodePort。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: gateway-app
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /app/*
backend:
serviceName: app
servicePort: 8080
请在此指导我们如何在 k8s 集群上运行带有会话和 cookie 的应用程序。