在本地2节点kubernetes集群中运行aws cloud kubernetes项目的问题



我正在尝试在本地集群环境中运行为AWS云部署配置的这个项目。在云部署中,它使用Kubernetes CLI (kubectl)和kops(创建&在AWS云上管理Kubernetes集群

简而言之,我的问题是:是否可以在我的本地2节点kubernetes集群中运行此应用程序进行测试(因为我没有AWS云)?

更多细节:

在云设置中,它有一个集群创建脚本来创建集群,创建集群后,我们得到两个AWS elb的URL,可以用来与云负载均衡器提供的两个服务(一个后端服务+一个前端服务)进行交互。

我的问题:当我试图在我的实验室托管的2节点kubernetes集群上运行这个项目时。我已经使用kubeadm而不是GitHub链接中给出的本地AWS云(kops + k8s)设置了集群。我已经修改了脚本,分别删除了对kops和AWS的引用。在这个本地kubernetes集群中,我使用MetalLB作为服务的loadBalancer。

在脚本的最后,不像在AWS云部署中,客户端可以使用2个AWS ELB地址链接与系统服务接口,我们得到两个物理节点的公共ip:xxx.xxx.80.72xxx.xxx.12.58分别为两个服务,由MetalLb负载均衡器提供(使用预配置的地址池)。

所有pod都处于running状态

$ 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

但是,当我尝试从集群中的客户端连接到服务时,它无法连接到服务。执行总是在_connect method的if-else条件中进入异常(代码如下):

在这一点上,有人可以给我一些提示,什么可能是连接这个项目的服务在我的裸机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

不可能在我的本地2节点上运行此应用程序吗kubernetes集群测试(因为我没有aws云)?

这不是推荐的方法,也不会像预期的那样工作。

尝试在非aws环境上运行此设置,您没有满足先决条件:

我们假设您在AWS上的EC2 linux VM中运行安装Python3(最好是Python3.6或更高版本——我们没有使用早期版本测试)。AWS对资源有默认配额可以分配给账户。本文档中要创建的集群将超过常规AWS帐户的默认vCPU限制(32)。在继续之前,请确保此限制已解除。

为了在本地学习和测试,最好使用kubeadm创建一个集群:

如果你需要,kubeadm工具是很好的:

  • 一个简单的方法让你尝试Kubernetes,可能是第一次。
  • 现有用户自动设置集群和测试应用程序的方法。
  • 在其他生态系统和/或更大范围的安装工具中的构建块。

最新更新