我是 k8s 的新手,在虚拟机上设置本地集群并至少从我的主机上访问它时遇到了一些麻烦。
设置。
- 我有一个本地集群,由三台 Debian 虚拟机组成,其中有 1 个主虚拟机和 2 个从虚拟机。我创建了一个带 CIDR 的虚拟接口,
10.0.0.0/16
并将 dhcp 域设置为abcd.com
。 - 我创建了我的集群
clusterDNS: abcd.com
,podCIDR: 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-svc
NodePort
nginx-pod
80
abdc.com
nginx-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>
问题。
- 尽管
nginx-ingress-controller
显示Running
。它没有获取外部 IP 并且卡在了<pending>
。我不知道为什么!!(您可以在上面的服务日志中看到) - 从任何节点的 ip,我都可以通过以下方式访问 nginx-svc,
curl -H 'Host: isitayush.dev' -X 10.0.191.144:31565
但是我怎样才能通过任何节点的外部 ip 轻松访问我的 nginx-svc?(即 10.0.191.144 [我的主节点 ip] 应该将我路由到nginx-svc
或nginx-pod
)
我可以将
nginx-ingress-controller
端口切换31565
到80
&443
或其他端口,以便我可以使用节点外部 IP 并仍然可以在规则内访问我定义的服务吗?
- 是否也可以
nginx-pod
通过域名abcd.com
或更好的其他方式(例如pqrs.com
外部)访问?鉴于我拥有它pqrs.com
并且它有一个指向外部负载均衡器 ip 或节点 ip 之一的 A 记录nginx-ingress-controller
?
我的最终目标是设置一条 A 记录并将我拥有的多个域指向此集群(一个外部负载均衡器,在所有节点或仅 pod 的 IP 之间进行平衡),然后
nginx-ingress-handler
通过规则将它们路由到适当的服务ingress
。可以这样做吗?我将在 AWS 上部署它(如果可能的话,我想尝试在此设置中避免使用他们的负载均衡器服务)。
- 我可以将“dhcp 域”和“集群 dns”域分开吗?例如,在我的界面设置中,我可以设置
abcd.com
,在创建集群时我会设置pqrs.com
?
谢谢你!