Kubernetes 如何让nginx入口处理k3s集群上的服务请求?
我希望nginx ingress负载平衡器能够处理来自网络/互联网中其他机器的请求 我已经安装了带metallb、nginx入口和cert manager的k3s。所有吊舱都在运行。现在我有了以下部署和服务Kubernetes 如何让nginx入口处理k3s集群上的服务请求?,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我希望nginx ingress负载平衡器能够处理来自网络/互联网中其他机器的请求 我已经安装了带metallb、nginx入口和cert manager的k3s。所有吊舱都在运行。现在我有了以下部署和服务 # webserver-deployment.yaml --- apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: app: httpd name: httpd
# webserver-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: httpd
name: httpd
namespace: webserver
spec:
replicas: 1
selector:
matchLabels:
app: httpd
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: httpd
spec:
containers:
- image: httpd:2.4.46
name: httpd
nodeSelector:
role: worker
status: {}
# webserver-service.yaml
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: httpd
name: httpd
namespace: webserver
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: httpd
status:
loadBalancer: {}
可以从群集访问该服务
% curl 10.43.53.255
<html><body><h1>It works!</h1></body></html>
我想我可以从入口IP192.168.178.240
nginx-ingress-ingress-nginx-controller-admission ClusterIP 10.43.116.250 <none> 443/TCP 3d app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
nginx-ingress-ingress-nginx-controller LoadBalancer 10.43.10.136 192.168.178.240 80:31517/TCP,443:31733/TCP 3d app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
从上面看哪一个是不相等的?那么,我如何正确设置入口?您能添加入口描述吗?您是指pod nginx入口控制器吗?不,我说的是入口资源
k get ingres-n webserver httpd ingres-oyaml
但是您发布的文件webserver-ingres.yaml在该命名空间中定义了一个入口。这是在向Nginx入口控制器发出请求时将服务与路径关联的定义。如果我添加了它,那么我在错误的机器上
nginx-ingress-ingress-nginx-controller-admission ClusterIP 10.43.116.250 <none> 443/TCP 3d app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
nginx-ingress-ingress-nginx-controller LoadBalancer 10.43.10.136 192.168.178.240 80:31517/TCP,443:31733/TCP 3d app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
curl 192.168.178.240:80
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
% kubectl get ingress -n webserver httpd-ingress -oyaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"nginx"},"name":"httpd-ingress","namespace":"webserver"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"httpd","servicePort":80},"path":"/"}]}}]}}
kubernetes.io/ingress.class: nginx
creationTimestamp: "2021-04-23T19:21:40Z"
generation: 1
managedFields:
- apiVersion: networking.k8s.io/v1beta1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:kubernetes.io/ingress.class: {}
f:spec:
f:rules: {}
manager: kubectl-client-side-apply
operation: Update
time: "2021-04-23T19:21:40Z"
- apiVersion: networking.k8s.io/v1beta1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:loadBalancer:
f:ingress: {}
manager: nginx-ingress-controller
operation: Update
time: "2021-04-23T19:21:47Z"
name: httpd-ingress
namespace: webserver
resourceVersion: "25412"
uid: ab3706c5-8d93-4a91-b8ee-72bc7995f662
spec:
rules:
- http:
paths:
- backend:
service:
name: httpd
port:
number: 80
path: /
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- ip: 192.168.178.36
$ curl 192.168.178.36
curl: (7) Failed to connect to 192.168.178.36 port 80: Connection refused