首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么能看到库伯奈特的入口端点?

我怎么能看到库伯奈特的入口端点?
EN

Stack Overflow用户
提问于 2018-08-11 16:32:49
回答 1查看 1.8K关注 0票数 1

我想知道,哪个端点是为某个入口正确配置的。

例如,我有以下入口:

代码语言:javascript
复制
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

它正在运行以下服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: microsyn
spec:
  ports:
  - port: 8080
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: microsyn

此服务公开此部署:

代码语言:javascript
复制
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应用程序,在我刚刚在本地创建的对接映像中,它向路径'/‘问好,这就是它拥有imagePullPolicy的原因:永远不要,它只是为了测试目的,并学习如何创建入口。

因此,我从nginx-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

但后来我得到了一个:

代码语言:javascript
复制
<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>

所以我唯一拥有的是这个迷你机器人的,它工作得很好。但我看不出为这个入口配置了哪些端点..。

我看到原木上写着:

代码语言:javascript
复制
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 ->您在监听哪个端点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 18:11:25

但为什么我会得到404?

入口资源--或者您在问题中显示的资源--使用虚拟主机路由,因此在与该URL交互时必须设置host:头:

代码语言:javascript
复制
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,或者使用德斯马斯克创建一个本地名称服务器,在这里您可以重写dictionary.juan.com以始终返回192.168.99.100,然后Chrome将自己发送正确的host:头。

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

这个问题有点不准确,因为Endpoint是一个正式的资源,与Ingress无关,但答案是:

代码语言:javascript
复制
kubectl get endpoints microsyn

我想运行一个命令,上面写着nginx ->您在监听哪个端点?

首先,查找nginx-ingress的名称(如果您有多个的话,它们中的任何一个都应该这样做),然后查看Pod中的nginx.conf,以确切地知道它将Ingress资源转换为什么规则:

代码语言:javascript
复制
kubectl exec $ingress_pod cat /etc/nginx/nginx.conf
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51801688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档