问题描述
我已经将Django / React应用程序部署到K8中,并将这两种部署都作为服务公开(ClusterIP)。 每当我尝试通过其ClusterIP:8000调用API服务时,有时都会拒绝连接。因此,我检查了其端点,并且三个现有端点中只有一个返回了我期望的值。我知道在调用ClusterIP时,它会重定向到这三个端点之一。
是否可以“调试”传入的服务请求?我可以修改现有端点的数量(以便可以将其限制为唯一的工作端点)吗?是否还有其他方法可以查看服务日志以找出为什么只有一个端点在工作?
解决方法
我能够解决它:
我部署了一个三层应用程序(Django / React / DB),并为每个部署使用了相同的选择器,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-xxx-deployment
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
因此,在使用"kubectl expose deployment/..."
进行公开时,它创建的端点数量与在部署中发现的相等选择器数量相同。由于我有三个部署(DB / React / Djagno),因此创建了三个端点。
像这样更改部署.yaml可以修复我的错误,并且只创建了一个端点:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: myapp-web
spec:
replicas: 1
selector:
matchLabels:
app: mapp-web
,
ClusterIP:8000似乎不能正确使用。 您可以将其替换为http:// $(serviceName)。$(namespace):8000 /以正确使用服务。