gpt4 book ai didi

kubernetes - 谷歌 Kubernetes 引擎入口不起作用

转载 作者:行者123 更新时间:2023-12-02 12:34:30 24 4
gpt4 key购买 nike

按照 GKE 上的“Kubernetes in Action”一书的指南创建 ingress,但 ingress 不起作用,无法从 Ingress 的公共(public) IP 地址访问。

  • 创建副本集以创建 pod。
  • 创建服务。 (遵循“Kubernetes in Action”中的 nodeport 方法)。
  • 创建入口。

  • ReplicaSet、Service、Ingress创建成功,可以从公网IP访问nodeport,ingress没有UNHEALTHY。

    副本集:
    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

    节点端口本身可以从公共(public) 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

    C:\kube>kubectl 获取节点
    NAME                                   STATUS   ROLES    AGE   VERSION
    gke-kubia-default-pool-08dd2133-qbz6 Ready <none> 8d v1.12.8-gke.6
    gke-kubia-default-pool-183639fa-18vr Ready <none> 8d v1.12.8-gke.6
    gke-kubia-default-pool-42725220-43q8 Ready <none> 8d v1.12.8-gke.6

    C:\kube>kubectl 获取节点 -o 宽
    NAME                                   STATUS   ROLES    AGE   VERSION         INTERNAL-IP   EXTERNAL-IP      OS-IMAGE                             KERNEL-VERSION   CONTAINER-RUNTIME
    gke-kubia-default-pool-08dd2133-qbz6 Ready <none> 8d v1.12.8-gke.6 10.140.0.17 35.201.224.238 Container-Optimized OS from Google 4.14.119+ docker://17.3.2
    gke-kubia-default-pool-183639fa-18vr Ready <none> 8d v1.12.8-gke.6 10.140.0.18 35.229.152.12 Container-Optimized OS from Google 4.14.119+ docker://17.3.2
    gke-kubia-default-pool-42725220-43q8 Ready <none> 8d v1.12.8-gke.6 10.140.0.16 34.80.225.64 Container-Optimized OS from Google 4.14.119+ docker://17.3.2

    C:\kube> curl http://34.80.225.64:30123
    You've hit kubia-j2lnr

    但是无法从外部访问入口。

    主机文件:
    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> curl http://kubia.example.com
    curl: (7) Failed to connect to kubia.example.com port 80: Timed out

    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可以得到一些resule,34.98.92.110的80端口可以从内网访问。

    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:/# curl http://34.98.92.110 default backend - 404 root@kubia-lrt9x:/# curl http://34.98.92.110 default backend - 404 root@kubia-lrt9x:/#
    root@kubia-lrt9x:/# curl http://10.56.0.7:8080 default backend - 404 root@kubia-lrt9x:/#

    有人知道如何调试吗?

    nodeport 已添加到防火墙,否则 nodeport 不可访问。入口 IP 似乎不需要添加到防火墙。

    最佳答案

    尝试暴露副本集以便能够从外部连接:

    $ kubectl expose rs hello-world --type=NodePort --name=my-service

    请记住首先删除服务 kubia-nodeport 并删除 Ingress 配置文件中的选择器和服务部分,然后使用 应用更改kubectl 申请 命令。

    您可以在这里找到更多信息: exposing-externalip .

    有用的文档: kubectl-expose .

    关于kubernetes - 谷歌 Kubernetes 引擎入口不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660336/

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