gpt4 book ai didi

docker - 如何查看kubernetes的入口端点?

转载 作者:行者123 更新时间:2023-12-02 21:14:53 25 4
gpt4 key购买 nike

我想知道,对于某个入口正确配置了哪些端点。

例如,我有以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dictionary
spec:
tls:
- hosts:
- dictionary.juan.com
secretName: microsyn-secret
backend:
serviceName: microsyn
servicePort: 8080
rules:
- host: dictionary.juan.com
http:
paths:
- path: /synonyms/*
backend:
serviceName: microsyn
servicePort: 8080

正在使用以下服务:
apiVersion: v1
kind: Service
metadata:
name: microsyn
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
name: http
selector:
app: microsyn

该服务公开了此部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: microsyn
spec:
replicas: 1
selector:
matchLabels:
app: microsyn
template:
metadata:
labels:
app: microsyn
spec:
containers:
- name: microsyn
image: microsynonyms
imagePullPolicy: Never
ports:
- containerPort: 8080

该应用程序是一个侦听端口8080的nodejs应用程序,它在我刚刚在本地创建的Docker镜像中为路径“/”打招呼,这就是它具有imagePullPolicy的原因:从不,它仅用于测试目的并学习如何创建一个入口。

因此,我从nginx-ingress创建了入口,它已经启动并正在使用Nodeport进行本地环境测试,然后将其带入带有负载均衡器的部署中:

https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

因此,我执行以下操作:
minikube service list
|---------------|----------------------|--------------------------------|
| NAMESPACE | NAME | URL |
|---------------|----------------------|--------------------------------|
| default | kubernetes | No node port |
| default | microsyn | No node port |
| kube-system | default-http-backend | http://192.168.99.100:30001 |
| kube-system | kube-dns | No node port |
| kube-system | kubernetes-dashboard | http://192.168.99.100:30000 |
| nginx-ingress | nginx-ingress | http://192.168.99.100:31253 |
| | | http://192.168.99.100:31229 |
|---------------|----------------------|--------------------------------|

我能做到的出色:
curl http://192.168.99.100:31253/synonyms
但是然后我得到一个:
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.15.2</center>
</body>
</html>

所以我唯一的Nginx是这个minikube中的一个,它工作正常。但是我看不到为此入口配置了哪些端点..​​.

我看到以下日志:
2018/08/11 16:07:05 [notice] 117#117: signal process started
I0811 16:07:05.313037 1 event.go:218] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"dictionary", UID:"9728e826-9d80-11e8-9caa-0800270091d8", APIVersion:"extensions", ResourceVersion:"57014", FieldPath:""}): type: 'Normal' reason: 'AddedOrUpdated' Configuration for default/dictionary was added or updated
W0811 16:15:05.826537 1 reflector.go:341] github.com/nginxinc/kubernetes-ingress/nginx-controller/controller/controller.go:413: watch of *v1.ConfigMap ended with: too old resource version: 56348 (56655)

因此,这意味着字典入口已被正确处理。

但是,为什么我会得到404?

在哪里可以看到为此入口配置的端点?

我想运行一个命令,说nginx->您正在侦听哪些端点?

最佳答案

But then Why I get a 404?



入口资源-或肯定是您在问题中显示的资源-使用虚拟主机路由,因此在与该URL交互时必须设置 host: header :
curl -H 'host: dictionary.juan.com' http://192.168.99.100:31253/synonyms/something

我将不得不查询 path:语法,以确定 /synonyms/*是否与 /synonyms相匹配,这就是为什么我在 curl中包含斜杠和其他内容的原因。

要以非 curl方式与之交互,您可以将 host:中的 Ingress临时更改为192.168.99.100,或使用 dnsmasq创建本地名称服务器,在其中可以覆盖 dictionary.juan.com以始终返回 192.168.99.100,然后Chrome将发送单独纠正 host: header 。

Where can I see the endpoints that are configured for this ingress??



这个问题有点不准确,因为 Endpoint是正式资源,并且与 Ingress不相关,但是答案是:
kubectl get endpoints microsyn

I would like to run a command that says nginx --> which endpoints are you listening to?



首先,查找nginx-ingress Pod的名称(如果有多个,则其中的任何一个都应该执行),然后查看Pod中的 nginx.conf,以确切地知道将 Ingress资源转换为以下规则:
kubectl exec $ingress_pod cat /etc/nginx/nginx.conf

关于docker - 如何查看kubernetes的入口端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com