我正在跑步:
总结:服务在从主机节点查询时拒绝响应。这甚至应该起作用吗?如果没有,我可以停止用头撞这堵墙...
我可以从本地网络的任何地方访问 service.foo.com,但是如果我尝试使用 cURL 之类的东西从任何主机节点向 service.foo.com 发出请求,我会收到“连接被拒绝" 错误(但我可以毫无问题地 ping 服务)。我从在 k8s 集群上运行的任何 pod 中得到相同的行为。
这让事情变得特别困难,因为我正在尝试设置 OIDC 提供程序以用于控制对 k8s 仪表板的访问,并且主机节点需要能够查询提供程序。
kube 服务地址:10.233.0.0/18
豆荚cidr:10.233.64.0/18
MetalLB 配置:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 172.16.31.75-172.16.31.79
入口控制器服务描述
Name: foo-com-ic-nginx-ingress
Namespace: default
Labels: app.kubernetes.io/instance=foo-com-ic
app.kubernetes.io/managed-by=Helm
app.kubernetes.io/name=foo-com-ic-nginx-ingress
helm.sh/chart=nginx-ingress-0.8.0
Annotations: <none>
Selector: app=foo-com-ic-nginx-ingress
Type: LoadBalancer
IP Families: <none>
IP: 10.233.48.18
IPs: <none>
IP: 172.16.31.76
LoadBalancer Ingress: 172.16.31.76
Port: http 80/TCP
TargetPort: 80/TCP
NodePort: http 31445/TCP
Endpoints: 10.233.105.18:80
Port: https 443/TCP
TargetPort: 443/TCP
NodePort: https 31173/TCP
Endpoints: 10.233.105.18:443
Session Affinity: None
External Traffic Policy: Local
HealthCheck NodePort: 30406
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal nodeAssigned 9m4s (x4 over 43m) metallb-speaker announcing from node "node4"
服务入口描述
Name: my-service
Namespace: default
Address: 172.16.31.76
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
SNI routes service.foo.com
Rules:
Host Path Backends
---- ---- --------
service.foo.com / my-service:80 (10.233.96.27:80)
Annotations: kubernetes.io/ingress.class: service.com
meta.helm.sh/release-name: my-service
meta.helm.sh/release-namespace: default
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal AddedOrUpdated 46m (x2 over 46m) nginx-ingress-controller Configuration for default/my-service was added or updated
答案 0 :(得分:0)
以防万一有人在研究自己的时遇到这个问题,我最终能够解决这个问题。偶然地,我注意到我可以从运行入口控制器 Pod 的节点卷曲服务。
我的解决方法是将入口控制器的安装类型从“部署”更改为“守护进程”。现在入口控制器 Pod 运行在每个节点上,我可以从集群中的每个节点访问服务。