通过入口控制器访问我的k8s API时遇到问题。使用端口转发到我的pod IP ClusterIP服务,我可以验证api是否可访问。但是,当尝试通过入口设置访问时,IP地址不可访问。如何调试?
我的部署设置如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: weather-api
labels:
app: webapi
spec:
replicas: 1
selector:
matchLabels:
app: ingress-weather
template:
metadata:
labels:
app: ingress-weather
api: weather
spec:
containers:
- name: api
image: xyz/weatherforecast:v2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
- containerPort: 443
protocol: TCP
服务:
apiVersion: v1
kind: Service
metadata:
name: api-svc
spec:
ports:
- port: 8100
targetPort: 80
name: web
selector:
app: ingress-weather
type: ClusterIP
入口控制器:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
name: api-ingress
namespace: app
spec:
rules:
- http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-svc
port:
number: 8100
使用以下端口转发之一,允许我通过//localhost:8080/访问我的API:
kubectl port-forward pod/weather-api-99c9c7fd6-7sr6z 8080:80
kubectl port-forward service/api-svc 8080:8100
kubectl获取svc -n入口-nginx返回:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.0.240.185 104.42.145.179 80:32294/TCP,443:31047/TCP 4d2h
ingress-nginx-controller-admission ClusterIP 10.0.116.19 <none> 443/TCP 4d2h
但是当我访问www.example.com时//104.42.145.179:32294/api,它没有解析(超时)。
我还能做些什么来找到无法访问的原因?
1条答案
按热度按时间vd8tlhqk1#
不知道您为什么提到32294,您可以直接访问它。
尝试类似以下内容,因为您现在有端口为80&443的入口控制器
http://104.42.145.179/api
此外,确保您的入口控制器POD正在运行
更新
入口似乎位于错误的****命名空间中:名称空间:应用程序
而您的端口转发来自默认命名空间
因此,当请求到达入口时,它会在app命名空间中找到服务
从入口删除命名空间**,然后尝试