我有两台 Ubuntu 18.04 裸机服务器。使用 devstack 部署,我建立了一个多节点(2 个节点)集群,其中一台服务器具有控制器服务和计算,而第二台服务器只有计算。在控制器节点中,我使用 Octavia 启用了 lbaas v2。
# LBaaS enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas stable/queens enable_plugin octavia https://git.openstack.org/openstack/octavia stable/queens enable_service q-lbaasv2 octavia o-cw o-hk o-hm o-api
我创建了一个具有 1 个主节点和 2 个小节点的 Kubernetes 集群。一些初步测试是成功的。通过 Helm 部署 WordPress 创建了一个负载均衡器,我能够按预期访问该应用程序。
我现在正在尝试设置一个 nginx-ingress 控制器。当我部署我的 nginx-ingress 控制器 LoadBalancer 服务时,我可以看到在 OpenStack 中创建的负载均衡器。但是,尝试使用外部 IP 访问入口控制器总是会导致空回复。
使用 CLI,我可以看到负载均衡器、池和成员。成员条目表明存在错误:
+---------------------+-------------------------- ------------+ | 领域 | 价值 | +---------------------+-------------------------- ------------+ | 地址 | 10.0.0.9 | | admin_state_up | 真 | | created_at | 2018-09-28T22:15:51 | | 编号 | 109ad896-5953-4b2b-bbc9-d251d44c3817 | | 姓名 | | | 操作状态 | 错误 | | 项目 ID | 12b95a935dc3481688eb840249c9b167 | | 协议端口 | 31042 | | 供应状态 | 活跃 | | 子网ID | 1e5efaa0-f95f-44a1-a271-541197f372ab | | 更新了 | 2018-09-28T22:16:33 | | 重量 | 1 | | 监控端口 | 无 | | 监视器地址 | 无 | +---------------------+-------------------------- ------------+
但是,没有迹象表明错误是什么。日志中没有我能找到的相应错误。
使用 kubectl port-forward 我验证了 nginx 入口控制器已启动/运行并正确配置。问题似乎出在负载均衡器上。
我的问题是如何诊断错误是什么?
我只找到了一份与 lbaas v2 相关的故障排除指南,它声称我应该能够在运行时看到 q-lbaas-命名空间:ip netns list
. 但是,没有定义。
使用 helm --dry-run --debug 服务 yaml 是:
# Source: nginx-ingress/templates/controller-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-ingress
chart: nginx-ingress-0.25.1
component: "controller"
heritage: Tiller
release: oslb2
name: oslb2-nginx-ingress-controller
spec:
clusterIP: ""
externalTrafficPolicy: "Local"
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
- name: https
port: 443
protocol: TCP
targetPort: https
selector:
app: nginx-ingress
component: "controller"
release: oslb2
type: "LoadBalancer"
有趣的是,与以前的(wordpress)LoadBalancer 服务相比,我注意到 nginx-ingress externalRoutingPolicy 设置为Local,而 wordpress 指定了 Cluster。我更改了 nginx-ingress 图表的 values.yaml 以将 externalRoutingPolicy 设置为 Cluster,现在负载均衡器正在工作。
我们希望将策略保留在“本地”以保留源 IP。关于为什么它不起作用的任何想法?