Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌Kubernetes引擎入口不';行不通_Kubernetes_Google Cloud Platform_Google Kubernetes Engine - Fatal编程技术网

谷歌Kubernetes引擎入口不';行不通

谷歌Kubernetes引擎入口不';行不通,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,创建入口遵循GKE上“Kubernetes in Action”一书的指南,但入口不起作用,可以从入口的公共IP地址访问 创建复制集以创建pod 创建服务。(遵循“Kubernetes in Action”上的节点端口方法) 创建入口 复制集、服务、入口创建成功,节点端口可以从公共IP地址访问,入口没有不健康 复制集: apiVersion: apps/v1beta2 kind: ReplicaSet metadata: name: kubia spec: replicas: 3 s

创建入口遵循GKE上“Kubernetes in Action”一书的指南,但入口不起作用,可以从入口的公共IP地址访问

  • 创建复制集以创建pod
  • 创建服务。(遵循“Kubernetes in Action”上的节点端口方法)
  • 创建入口
  • 复制集、服务、入口创建成功,节点端口可以从公共IP地址访问,入口没有不健康

    复制集:

    apiVersion: apps/v1beta2
    kind: ReplicaSet
    metadata:
      name: kubia
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: kubia
      template:
        metadata:
            labels:
              app: kubia
        spec:
          containers:
          - name: kubia
            image: sonyfaye/kubia
    
    服务:

    apiVersion: v1
    kind: Service
    metadata:
      name: kubia-nodeport
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: 8080
        nodePort: 30123
      selector:
        app: kubia
    
    入口:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: kubia
    spec:
      rules:
      - host: kubia.example.com
        http:
          paths:
          - path: /
            backend: 
              serviceName: kubia-nodeport
              servicePort: 80
    
    节点端口本身可以从公共IP地址访问

    C:\kube>kubectl获取svc

    NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    kubernetes       ClusterIP   10.59.240.1    <none>        443/TCP        8d
    kubia-nodeport   NodePort    10.59.253.10   <none>        80:30123/TCP   20h
    
    但是入口不能从外面进入

    主机文件:

    34.98.92.110 kubia.example.com
    
    C:\kube>kubectl描述入口

    Name:             kubia
    Namespace:        default
    Address:          34.98.92.110
    Default backend:  default-http-backend:80 (10.56.0.7:8080)
    Rules:
      Host               Path  Backends
      ----               ----  --------
      kubia.example.com
                         /   kubia-nodeport:80 (10.56.0.14:8080,10.56.1.6:8080,10.56.3.4:8080)
    Annotations:
      ingress.kubernetes.io/backends:         {"k8s-be-30123--c4addd497b1e0a6d":"HEALTHY","k8s-be-30594--c4addd497b1e0a6d":"HEALTHY"}
      ingress.kubernetes.io/forwarding-rule:  k8s-fw-default-kubia--c4addd497b1e0a6d
      ingress.kubernetes.io/target-proxy:     k8s-tp-default-kubia--c4addd497b1e0a6d
      ingress.kubernetes.io/url-map:          k8s-um-default-kubia--c4addd497b1e0a6d
    Events:    
    
                                   <none>
    
    C:\kube>telnet kubia.example.com 80

    Connecting To kubia.example.com...
    
    C:\kube>telnet 34.98.92.110 80

    Connecting To 34.98.92.110...Could not open connection to the host, on port 80: Connect failed
    
    从内部网尝试。 curl 34.98.92.110 IP可以得到一些结果,并且34.98.92.110的80端口可以从intranet访问

    C:\kube>kubectl exec-it kubia-lrt9x bash

    root@kubia-lrt9x:/# curl http://kubia.example.com
    curl: (6) Could not resolve host: kubia.example.com
    
    root@kubia-lrt9x:/#卷曲
    默认后端-404
    root@kubia-lrt9x:/#卷曲
    默认后端-404
    root@kubia-lrt9x:/# root@kubia-lrt9x:/#卷曲
    默认后端-404
    root@kubia-lrt9x:/#

    有人知道如何调试这个吗


    节点端口已添加到防火墙,否则无法访问节点端口。入口IP似乎不需要添加到防火墙。

    尝试公开replicaset以便能够从外部连接:

    $ kubectl expose rs hello-world --type=NodePort --name=my-service
    
    请记住,首先删除服务kubia节点端口,并删除Ingress配置文件中带有服务的选择器和节,然后使用kubectl apply命令应用更改

    您可以在此处找到更多信息:


    有用的文档:。

    尝试公开replicaset以便能够从外部连接:

    $ kubectl expose rs hello-world --type=NodePort --name=my-service
    
    请记住,首先删除服务kubia节点端口,并删除Ingress配置文件中带有服务的选择器和节,然后使用kubectl apply命令应用更改

    您可以在此处找到更多信息:


    有用的文档:。

    您是否已将入口ip地址映射到DNS记录?谢谢,Harsh。是的。在我的例子中,使用hosts文件映射hosts文件:34.98.92.110 kubia.example.com。问题是,入口ip的80端口不能从internet访问,但可以从kubernetes intranet访问。它将默认后端404设置为内部网访问。您是否已将入口ip地址映射到DNS记录?谢谢,Harsh。是的。在我的例子中,使用hosts文件映射hosts文件:34.98.92.110 kubia.example.com。问题是,入口ip的80端口不能从internet访问,但可以从kubernetes intranet访问。它将默认后端404导出到内部网访问。
    Connecting To 34.98.92.110...Could not open connection to the host, on port 80: Connect failed
    
    root@kubia-lrt9x:/# curl http://kubia.example.com
    curl: (6) Could not resolve host: kubia.example.com
    
    $ kubectl expose rs hello-world --type=NodePort --name=my-service