-1

我正在尝试在我的本地集群环境中运行为 AWS 云部署配置的项目。在云部署中,它使用kubectlAWS 云上的 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


4

1 回答 1

0

是否可以在我的本地 2 节点 kubernetes 集群中运行此应用程序进行测试(因为我没有 aws 云)?

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

通过尝试在非 AWS 环境中运行此设置,您不符合先决条件

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

出于本地学习和测试目的,您最好使用 kubeadm 创建集群

如果您需要,kubeadm 工具很好:

  • 您可能是第一次尝试 Kubernetes 的简单方法。
  • 现有用户自动设置集群并测试其应用程序的一种方式。
  • 其他生态系统和/或具有更大范围的安装程序工具中的构建块。
于 2021-08-09T12:44:59.457 回答