如何使用 nginx-ingress 在 kuberenetes 中正确进入

如何使用 nginx-ingress 在 kuberenetes 中正确进入

我是 k8s 的新手,在虚拟机上设置本地集群并至少从我的主机上访问它时遇到了一些麻烦。

设置。

  • 我有一个本地集群,由三台 Debian 虚拟机组成,其中有 1 个主虚拟机和 2 个从虚拟机。我创建了一个带 CIDR 的虚拟接口,10.0.0.0/16并将 dhcp 域设置为abcd.com
  • 我创建了我的集群clusterDNS: abcd.compodCIDR: 69.96.0.0/16并设置了serviceCIDR: 69.97.0.0/16。我正在使用 cilium CNI 和 coreDNS 核心文件。
.:53 {
    errors
    health {
       lameduck 5s
    }
    ready
    kubernetes abcd.com in-addr.arpa ip6.arpa {
       pods insecure
       fallthrough in-addr.arpa ip6.arpa
       ttl 30
    }
    prometheus :9153
    forward . /etc/resolv.conf {
       max_concurrent 1000
    }
    cache 30
    loop
    reload
    loadbalance
}
  • 我在默认命名空间中部署了一个,并创建了一个在端口上公开的nginx-pod服务。我创建了一个入口规则,其中包含要转发到的规则。nginx-svcNodePortnginx-pod80abdc.comnginx-svc
  • 然后我安装了ingress-nginx-controller

日志。

  • coreDNS的核心文件:
ayush@ip-10-0-191-144:~$ kubectl describe ingress/example
Name:             example
Labels:           <none>
Namespace:        default
Address:
Ingress Class:    nginx
Default backend:  <default>
Rules:
  Host           Path  Backends
  ----           ----  --------
  abcd.com
                 /   nginx-svc:80 (69.96.1.111:80)
Annotations:     <none>
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  Sync    30m (x5 over 11h)  nginx-ingress-controller  Scheduled for sync
  • 服务:
ayush@ip-10-0-191-144:~$ kubectl get svc -A
NAMESPACE       NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
default         kubernetes                           ClusterIP      69.97.0.1       <none>        443/TCP                      2d14h
default         nginx-svc                            NodePort       69.97.216.124   <none>        80:30744/TCP                 26h
ingress-nginx   ingress-nginx-controller             LoadBalancer   69.97.88.241    <pending>     80:31565/TCP,443:32581/TCP   2d2h
ingress-nginx   ingress-nginx-controller-admission   ClusterIP      69.97.200.46    <none>        443/TCP                      2d2h
kube-system     cilium-agent                         ClusterIP      None            <none>        9964/TCP                     2d14h
kube-system     hubble-metrics                       ClusterIP      None            <none>        9965/TCP                     2d14h
kube-system     hubble-peer                          ClusterIP      69.97.190.83    <none>        443/TCP                      2d14h
kube-system     hubble-relay                         ClusterIP      69.97.188.92    <none>        80/TCP                       2d14h
kube-system     hubble-ui                            ClusterIP      69.97.9.207     <none>        80/TCP                       2d14h
kube-system     kube-dns                             ClusterIP      69.97.0.10      <none>        53/UDP,53/TCP,9153/TCP       2d14h
  • 豆荚:
ayush@ip-10-0-191-144:~$ kubectl get pods -A -o wide
NAMESPACE       NAME                                        READY   STATUS    RESTARTS       AGE     IP             NODE              NOMINATED NODE   READINESS GATES
default         dnsutils                                    1/1     Running   1 (11h ago)    11h     69.96.2.47     ip-10-0-94-54     <none>           <none>
default         nginx-pod                                   1/1     Running   4 (11h ago)    26h     69.96.1.111    ip-10-0-38-41     <none>           <none>
ingress-nginx   ingress-nginx-controller-55474d95c5-f4kfx   1/1     Running   4 (11h ago)    2d3h    69.96.1.80     ip-10-0-38-41     <none>           <none>
kube-system     cilium-428bt                                1/1     Running   7 (11h ago)    2d14h   10.0.38.41     ip-10-0-38-41     <none>           <none>
kube-system     cilium-8hpbb                                1/1     Running   4 (11h ago)    2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     cilium-cxgnc                                1/1     Running   6 (11h ago)    2d14h   10.0.94.54     ip-10-0-94-54     <none>           <none>
kube-system     cilium-operator-6cdc4568cb-gg58q            1/1     Running   39 (11h ago)   2d14h   10.0.38.41     ip-10-0-38-41     <none>           <none>
kube-system     cilium-operator-6cdc4568cb-k7nsd            1/1     Running   4 (11h ago)    2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     coredns-76f75df574-45f7b                    1/1     Running   9 (11h ago)    2d14h   69.96.0.43     ip-10-0-191-144   <none>           <none>
kube-system     coredns-76f75df574-77m4h                    1/1     Running   9 (11h ago)    2d14h   69.96.0.221    ip-10-0-191-144   <none>           <none>
kube-system     etcd-ip-10-0-191-144                        1/1     Running   11 (11h ago)   2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     hubble-relay-d8b6b55c9-st57x                1/1     Running   9 (11h ago)    2d11h   69.96.2.197    ip-10-0-94-54     <none>           <none>
kube-system     hubble-ui-6548d56557-b6f49                  2/2     Running   9 (11h ago)    2d11h   69.96.2.93     ip-10-0-94-54     <none>           <none>
kube-system     kube-apiserver-ip-10-0-191-144              1/1     Running   11 (11h ago)   2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     kube-controller-manager-ip-10-0-191-144     1/1     Running   11 (11h ago)   2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     kube-proxy-7gc2j                            1/1     Running   4 (11h ago)    2d14h   10.0.94.54     ip-10-0-94-54     <none>           <none>
kube-system     kube-proxy-xt8nc                            1/1     Running   4 (11h ago)    2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>
kube-system     kube-proxy-xzjjj                            1/1     Running   4 (11h ago)    2d14h   10.0.38.41     ip-10-0-38-41     <none>           <none>
kube-system     kube-scheduler-ip-10-0-191-144              1/1     Running   11 (11h ago)   2d14h   10.0.191.144   ip-10-0-191-144   <none>           <none>

问题。

  1. 尽管nginx-ingress-controller显示Running。它没有获取外部 IP 并且卡在了<pending>我不知道为什么!!(您可以在上面的服务日志中看到)
  2. 从任何节点的 ip,我都可以通过以下方式访问 nginx-svc,curl -H 'Host: isitayush.dev' -X 10.0.191.144:31565但是我怎样才能通过任何节点的外部 ip 轻松访问我的 nginx-svc?(即 10.0.191.144 [我的主节点 ip] 应该将我路由到nginx-svcnginx-pod

我可以将nginx-ingress-controller端口切换3156580&443或其他端口,以便我可以使用节点外部 IP 并仍然可以在规则内访问我定义的服务吗?

  1. 是否也可以nginx-pod通过域名abcd.com或更好的其他方式(例如pqrs.com外部)访问?鉴于我拥有它pqrs.com并且它有一个指向外部负载均衡器 ip 或节点 ip 之一的 A 记录nginx-ingress-controller

我的最终目标是设置一条 A 记录并将我拥有的多个域指向此集群(一个外部负载均衡器,在所有节点或仅 pod 的 IP 之间进行平衡),然后nginx-ingress-handler通过规则将它们路由到适当的服务ingress。可以这样做吗?我将在 AWS 上部署它(如果可能的话,我想尝试在此设置中避免使用他们的负载均衡器服务)。

  1. 我可以将“dhcp 域”和“集群 dns”域分开吗?例如,在我的界面设置中,我可以设置abcd.com,在创建集群时我会设置pqrs.com

谢谢你!

相关内容