我正在做K8s ingress的练习,但当我用端口到达地址时,我总是得到404。我认为我的请求成功地到达了ingress nginx,但ingress没有将其转发到服务。请帮帮我。非常感谢
apiVersion: apps/v1
kind: Deployment
metadata:
name: mynginx
spec:
replicas: 2
selector:
matchLabels:
app: mynginx
template:
metadata:
labels:
app: mynginx
spec:
containers:
- name: mynginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: mynginx
spec:
selector:
app: mynginx
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mynginx
labels:
name: mynginx
spec:
rules:
- host: "eric.k8s.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: mynginx
port:
number: 80
要使用Ingress
,您需要部署Nginx入口控制器,而不仅仅是Nginx pod。
Nginx入口控制器不仅仅是Nginx,它是一个K8s控制器,负责更新Nginx配置并在0停机时加载它们。Nginx配置的来源可以是Nginx的配置映射,也可以是已定义的入口。因此,每次创建新的Ingress对象时,控制器都会确保Nginx配置具有服务于新入口所需的规则。如果没有控制器,您就不能使用Ingress对象,除非您使用不同的工具,如Traefik,但在这种情况下,您需要一个不同的控制器。
你可以通过头盔部署控制器,如所述
- https://kubernetes.github.io/ingress-nginx/deploy/或vi
kubectl
(如果不使用HELM(
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/cloud/deploy.yaml
一旦部署了入口控制器,就可以开始添加入口