我是Kubernetes的新手,也许我的问题很愚蠢,但我不知道如何解决它
我使用这个手册https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/创建了一个带有nodePort服务的nginx-ingress部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
replicas: 2
selector:
matchLabels:
app: nginx-ingress
template:
metadata:
labels:
app: nginx-ingress
spec:
serviceAccountName: nginx-ingress
containers:
- image: nginx/nginx-ingress:1.9.1
imagePullPolicy: Always
name: nginx-ingress
ports:
- name: http
containerPort: 80
- name: readiness-port
containerPort: 8081
readinessProbe:
httpGet:
path: /nginx-ready
port: readiness-port
periodSeconds: 1
securityContext:
allowPrivilegeEscalation: true
runAsUser: 101 #nginx
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
args:
- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret和服务:
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
nodePort: 30369
selector:
app: nginx-ingress并使用服务创建部署:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: landing
name: landing
labels:
app:landing
spec:
replicas: 1
selector:
matchLabels:
app: landing
template:
metadata:
labels:
app: landing
namespace: landing
spec:
containers:
- name: landing
image: private-registry/landing
imagePullPolicy: Always
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: landing
namespace: landing
spec:
selector:
app: landing
ports:
- protocol: TCP
port: 80
targetPort: 80然后添加入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: landing
namespace: landing
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
ingressClassName: nginx
rules:
- host: landing.site
http:
paths:
- path: /
backend:
serviceName: landing
servicePort: 80但在nginx-ingress POD中,我看到了默认的上行后端,
upstream default-landing-landing.site-landing-80 {
zone default-landing-landing.site-landing-80 256k;
random two least_conn;
server 127.0.0.1:8181 max_fails=1 fail_timeout=10s max_conns=0;
}我做错了什么?
发布于 2020-12-01 17:59:50
好吧,我太愚蠢了:)我有另一个入口在默认的后端和相同的主机。删除它,一切工作正常
发布于 2020-12-01 05:38:48
这就是nginx入口的工作方式。这里没有什么问题。默认的后端是处理nginx控制器无法理解的所有URL路径。因此,在您的示例中,任何期望landing.site/的请求都将由默认的后端提供服务,并显示一个通用的404nginx错误页面。
https://stackoverflow.com/questions/65078184
复制相似问题