运行 本地 2 节点 kubernetes 集群中的 aws 云 kubernetes 项目存在问题
Problem with running a aws cloud kubernetes project in local 2-node kubernetes cluster
我正在尝试 运行 this project 在我的本地集群环境中配置 AWS 云部署。在云部署中,它是在 AWS 云上使用 Kubernetes CLI (kubectl
) 和 kops(一种在 public 云基础设施上创建和管理 Kubernetes 集群的工具)配置的。
简而言之,我的问题是:是否可以 运行 这个应用程序在我本地的 2 节点 kubernetes 集群中进行测试(因为我没有 AWS 云)?
更多详情:
在云设置中,它有一个创建集群的脚本,创建集群后,我们得到两个AWS ELB的URL,可以用来与两个服务交互由云负载均衡器提供(一个后端服务+一个前端服务)。
我的问题: 因为我正在尝试 运行 我实验室托管的 2 节点 kubernetes 集群上的项目。我使用 kubeadm
而不是 GitHub link 中给出的原生 AWS 云 (kops + k8s) 来设置集群。我已将 the script to remove the references to kops and AWS respectively. In this local kubernetes cluster, I have used MetalLB 修改为服务的负载均衡器。
在脚本末尾,与 AWS 云部署不同,我们得到两个 public,而不是客户端可以用来与系统服务交互的 2 个 AWS ELB 地址 link物理节点的IP:分别为xxx.xxx.80.72
和xxx.xxx.12.58
两个服务,由MetalLb负载均衡器提供(使用预先配置的地址池)。
正如预期的那样,所有 pods 都处于 运行ning 状态。
$ 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
Is not it possible to run this application in my local 2-node
kubernetes cluster for testing (as I do not have aws cloud)?
这不是推荐的方法,不会按预期工作。
通过在非 AWS 环境中尝试 运行 此设置,您没有满足 Prerequisites:
We assume you are running inside an EC2 linux VM on AWS, where you
have Python3 installed (preferably Python3.6 or later -- we have not
tested with earlier versions). AWS has default quotas on resources
that can be allocated for accounts. The cluster to create in this doc
will exceed the default vCPU limit(32) for a regular AWS account.
Please make sure this limit is lifted before proceeding.
出于本地学习和测试目的,您最好通过 Creating a cluster with kubeadm:
The kubeadm tool is good if you need:
- A simple way for you to try out Kubernetes, possibly for the first time.
- A way for existing users to automate setting up a cluster and test their application.
- A building block in other ecosystem and/or installer tools with a larger scope.
我正在尝试 运行 this project 在我的本地集群环境中配置 AWS 云部署。在云部署中,它是在 AWS 云上使用 Kubernetes CLI (kubectl
) 和 kops(一种在 public 云基础设施上创建和管理 Kubernetes 集群的工具)配置的。
简而言之,我的问题是:是否可以 运行 这个应用程序在我本地的 2 节点 kubernetes 集群中进行测试(因为我没有 AWS 云)?
更多详情:
在云设置中,它有一个创建集群的脚本,创建集群后,我们得到两个AWS ELB的URL,可以用来与两个服务交互由云负载均衡器提供(一个后端服务+一个前端服务)。
我的问题: 因为我正在尝试 运行 我实验室托管的 2 节点 kubernetes 集群上的项目。我使用 kubeadm
而不是 GitHub link 中给出的原生 AWS 云 (kops + k8s) 来设置集群。我已将 the script to remove the references to kops and AWS respectively. In this local kubernetes cluster, I have used MetalLB 修改为服务的负载均衡器。
在脚本末尾,与 AWS 云部署不同,我们得到两个 public,而不是客户端可以用来与系统服务交互的 2 个 AWS ELB 地址 link物理节点的IP:分别为xxx.xxx.80.72
和xxx.xxx.12.58
两个服务,由MetalLb负载均衡器提供(使用预先配置的地址池)。
正如预期的那样,所有 pods 都处于 运行ning 状态。
$ 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
Is not it possible to run this application in my local 2-node kubernetes cluster for testing (as I do not have aws cloud)?
这不是推荐的方法,不会按预期工作。
通过在非 AWS 环境中尝试 运行 此设置,您没有满足 Prerequisites:
We assume you are running inside an EC2 linux VM on AWS, where you have Python3 installed (preferably Python3.6 or later -- we have not tested with earlier versions). AWS has default quotas on resources that can be allocated for accounts. The cluster to create in this doc will exceed the default vCPU limit(32) for a regular AWS account. Please make sure this limit is lifted before proceeding.
出于本地学习和测试目的,您最好通过 Creating a cluster with kubeadm:
The kubeadm tool is good if you need:
- A simple way for you to try out Kubernetes, possibly for the first time.
- A way for existing users to automate setting up a cluster and test their application.
- A building block in other ecosystem and/or installer tools with a larger scope.