如何查看 kubernetes 的入口端点?
How can I see the ingress endpoints of kubernetes?
我想知道,哪些是为特定入口正确配置的端点。
例如我有以下入口:
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 创建了 ingress 并且它已经启动 运行 一个用于本地环境测试的节点端口,稍后我将把它带到带有负载均衡器的部署中:
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?
入口资源——或者您在问题中展示的资源——使用 virtual-host 路由,因此在与 [=48] 交互时必须设置 host:
header =]:
curl -H 'host: dictionary.juan.com' http://192.168.99.100:31253/synonyms/something
我必须查找 path:
语法才能知道 /synonyms/*
是否匹配 /synonyms
,这就是我在 curl
中包含斜线和额外内容的原因。
要以非 curl
方式与其交互,您可以将 Ingress
中的 host:
暂时更改为 192.168.99.100 或使用 dnsmasq创建一个本地名称服务器,您可以在其中将 dictionary.juan.com
覆盖为始终 return 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
我想知道,哪些是为特定入口正确配置的端点。
例如我有以下入口:
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 创建了 ingress 并且它已经启动 运行 一个用于本地环境测试的节点端口,稍后我将把它带到带有负载均衡器的部署中:
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?
入口资源——或者您在问题中展示的资源——使用 virtual-host 路由,因此在与 [=48] 交互时必须设置 host:
header =]:
curl -H 'host: dictionary.juan.com' http://192.168.99.100:31253/synonyms/something
我必须查找 path:
语法才能知道 /synonyms/*
是否匹配 /synonyms
,这就是我在 curl
中包含斜线和额外内容的原因。
要以非 curl
方式与其交互,您可以将 Ingress
中的 host:
暂时更改为 192.168.99.100 或使用 dnsmasq创建一个本地名称服务器,您可以在其中将 dictionary.juan.com
覆盖为始终 return 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