我正在尝试在我的本地集群环境中运行为 AWS 云部署配置的项目。在云部署中,它使用kubectl
AWS 云上的 Kubernetes CLI ( ) 和 kops(一种在公共云基础设施上创建和管理 Kubernetes 集群的工具)进行配置。
简而言之,我的问题是:是否可以在我的本地 2 节点 kubernetes 集群中运行此应用程序进行测试(因为我没有 AWS 云)?
更多细节:
在云设置中,它有一个集群创建脚本来创建集群,在创建集群后,我们得到了两个 AWS ELB 的 URL,可以用来与云负载均衡器提供的两个服务交互(一个后端服务 +一项前端服务)。
我的问题: 当我试图在我的实验室托管的 2 节点 kubernetes 集群上运行该项目时。kubeadm
我已经使用而不是 GitHub 链接中给出的原生 AWS 云(kops + k8s)来设置集群。我已修改脚本以分别删除对 kops 和 AWS 的引用。在这个本地 kubernetes 集群中,我使用MetalLB作为服务的负载平衡器。
在脚本结束时,与 AWS 云部署不同,客户端可以使用 2 个 AWS ELB 地址链接与系统服务进行交互,而不是客户端可以使用的两个 AWS ELB 地址链接,而是获得物理节点的两个公共 IP:xxx.xxx.80.72
分别xxx.xxx.12.58
为这两个服务提供由 MetalLb 负载均衡器(使用预配置的地址池)。
正如预期的那样,所有 pod 都处于运行状态。
$ kubectl get all -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/benchmark-nodes-qccl6 4/4 Running 0 22h xxx.xxx..58 srl1 <none> <none>
pod/benchmark-nodes-s2rqj 4/4 Running 0 22h xxx.xxx.80.72 srl2 <none> <none>
pod/function-nodes-ct7jm 4/4 Running 17 22h xxx.xxx.12.58 srl1 <none> <none>
pod/function-nodes-d5r6w 4/4 Running 7 22h xxx.xxx..80.72 srl2 <none> <none>
pod/management-pod 1/1 Running 0 22h 192.168.120.66 srl1 <none> <none>
pod/memory-nodes-7dhsv 1/1 Running 1 22h xxx.xxx.80.72 srl2 <none> <none>
pod/memory-nodes-v8s2c 1/1 Running 1 22h xxx.xxx.12.58 srl1 <none> <none>
pod/monitoring-pod 1/1 Running 1 22h 192.168.120.84 srl1 <none> <none>
pod/routing-nodes-lc62q 1/1 Running 1 22h xxx.xxx.80.72 srl2 <none> <none>
pod/routing-nodes-xm8n2 1/1 Running 1 22h xxx.xxx.12.58 srl1 <none> <none>
pod/scheduler-nodes-495kj 1/1 Running 0 22h xxx.xxx.80.72 srl2 <none> <none>
pod/scheduler-nodes-pjb9w 1/1 Running 0 22h xxx.xxx.12.58 srl1 <none> <none>
$kubectl get svc -A
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/function-service LoadBalancer 10.108.79.97 xxx.xxx.12.58 5000:32427/TCP,5001:30516/TCP,5002:30830/TCP,5003:31430/TCP,5004:32448/TCP,5005:30177/TCP,5006:30892/TCP 22h role=scheduler
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20d <none>
service/routing-service LoadBalancer 10.107.63.188 xxx.xxx.80.72 6450:31251/TCP,6451:31374/TCP,6452:30037/TCP,6453:32030/TCP 22h role=routing
但是,当我尝试从集群中的客户端连接服务时,它无法连接到服务。执行总是在 if-else 条件下进入异常_connect method
(代码如下):
在这一点上,有人可以给我一些关于在我的裸机 2 节点集群中连接该项目的服务可能会出现什么问题的指示吗?
def _connect(self):
sckt = self.context.socket(zmq.REQ)
sckt.setsockopt(zmq.RCVTIMEO, 1000)
sckt.connect(self.service_addr % CONNECT_PORT)
sckt.send_string('')
try:
result = sckt.recv_string()
return result
except zmq.ZMQError as e:
if e.errno == zmq.EAGAIN:
return None
else:
raise e