Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Can';我不能通过互联网访问我的本地kubernetes服务 实施目标_Docker_Kubernetes_External_Minikube_Metallb - Fatal编程技术网

Docker Can';我不能通过互联网访问我的本地kubernetes服务 实施目标

Docker Can';我不能通过互联网访问我的本地kubernetes服务 实施目标,docker,kubernetes,external,minikube,metallb,Docker,Kubernetes,External,Minikube,Metallb,将运行在kubernetes上的Zookeeper实例公开到internet (底部提供了配置和版本信息) 实施尝试 我目前有一个minikube集群运行在ubuntu14.04上,由docker容器支持。 我正在运行一个裸机k8s集群,我正在尝试向互联网公开一个zookeeper服务。鉴于我的集群没有在云提供商上运行,我设置了metallib,以便为zookeeper服务提供网络负载均衡器实现 启动时一切正常,分配了一个外部IP,我可以通过curl命令从同一主机访问它 $ kubectl ge

将运行在kubernetes上的Zookeeper实例公开到internet

(底部提供了配置和版本信息)

实施尝试 我目前有一个
minikube
集群运行在
ubuntu14.04
上,由
docker
容器支持。 我正在运行一个裸机k8s集群,我正在尝试向互联网公开一个zookeeper服务。鉴于我的集群没有在云提供商上运行,我设置了
metallib
,以便为zookeeper服务提供网络负载均衡器实现

启动时一切正常,分配了一个外部IP,我可以通过curl命令从同一主机访问它

$ kubectl get pods -n metallb-system
NAME                          READY   STATUS    RESTARTS   AGE
controller-5c9894b5cd-9gh8m   1/1     Running   0          5h59m
speaker-j2z8q                 1/1     Running   0          5h59m


$ kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                         AGE
kubernetes   ClusterIP      10.xxx.xxx.xxx  <none>          443/TCP                         6d19h
zk-cs        LoadBalancer   10.xxx.xxx.xxx  172.1.1.x       2181:30035/TCP                  56m
zk-hs        LoadBalancer   10.xxx.xxx.xxx  172.1.1.x       2888:30664/TCP,3888:31113/TCP   6m15s

到目前为止,一切看起来都很好,我可以从集群外部访问LB,没有任何问题,但这正是我缺乏Kubernetes/网络知识的原因。我发现不可能将此LB公开到internet上。我曾试过运行我对之寄予厚望的
minikube隧道
,结果却大失所望

当minikube隧道运行时,从另一个节点运行curl命令只会看到请求超时

$ curl -D- "http://172.1.1.x:2181"
curl: (28) Failed to connect to 172.1.1.x port 2181: Timed out
在这一点上,正如我前面提到的,我被卡住了。 有没有什么方法可以让我在不把灵魂交给AWS或GCP的情况下将这项服务公开到互联网上

任何帮助都将不胜感激

服务配置 apiVersion:v1 种类:服务 元数据: 姓名:zk hs 标签: app:zk 规格: 选择器: app:zk 端口: -港口:2888 目标港:2888 名称:服务器 协议:TCP -港口:3888 目标港:3888 名称:领导人选举 协议:TCP 集群:“ 类型:负载平衡器 --- 版本:v1 种类:服务 元数据: 姓名:zk cs 标签: app:zk 规格: 选择器: app:zk 端口: -姓名:客户 协议:TCP 港口:2181 目标港:2181 类型:负载平衡器 --- apiVersion:policy/v1beta1 种类:POD预算 元数据: 名称:zk pdb 规格: 选择器: 火柴标签: app:zk 马克斯:1 --- apiVersion:apps/v1 种类:StatefulSet 元数据: 姓名:zk 规格: 选择器: 火柴标签: app:zk 服务名称:zk hs 副本:1份 更新策略: 类型:RollingUpdate POD管理策略:OrderedReady 模板: 元数据: 标签: app:zk 规格: 密切关系: 抗亲和力: 所需DuringSchedulingIgnoredDuringExecution: -标签选择器: 匹配表达式: -键:“应用程序” 接线员:在 价值观: -zk topologyKey:“kubernetes.io/hostname” 容器: -姓名:动物园管理员 imagePullPolicy:始终 图片:“图书馆/动物园管理员:3.6” 资源: 请求: 内存:“1Gi” cpu:“0.5” 端口: -集装箱港口:2181 姓名:客户 -集装箱港口:2888 名称:服务器 -集装箱港口:3888 名称:领导人选举 体积数量: -姓名:datadir 挂载路径:/var/lib/zookeeper -名称:动物园配置 装载路径:/conf 卷数: -名称:动物园配置 配置映射: 名称:动物园配置 securityContext: 金融稳定组:2000年 runAsUser:1000 runAsNonRoot:true VolumeClaim模板: -元数据: 姓名:datadir 规格: accessModes:[“ReadWriteOnce”] 资源: 请求: 存储:10Gi --- 版本:v1 种类:配置地图 元数据: 名称:动物园配置 名称空间:默认值 数据: zoo.cfg:| 时间=10000 dataDir=/var/lib/zookeer clientPort=2181 初始极限=10 syncLimit=4 apiVersion:v1 种类:配置地图 元数据: 名称空间:metallb系统 名称:config 数据: 配置:| 地址池: -名称:默认值 协议:第2层 地址: - 172.1.1.1-172.1.1.10 minikube:
v1.13.1


docker:
18.06.3-ce

你可以用minikube来做,但minikube的想法只是在你的本地环境中测试东西。因此,默认情况下,它没有正确的IPTable权限,是的,您可以调整它,但是如果您的目标只是在没有任何响亮的提供商的情况下使用,我强烈建议您使用
kubeadm
()


此工具将为您提供一个非常可定制的群集配置,您将能够设置网络问题而不会感到头痛。

Minikube通常是单节点群集
从另一个节点运行curl命令
表示您的设置中有更多节点。你能详细说明一下吗?还有,你试过使用吗?看看:在支持负载平衡器的云提供商上,将提供一个外部IP地址来访问该服务。在Minikube上,
LoadBalancer
类型使服务可以通过
Minikube服务
命令访问。hi@WytrzymałyWiktor澄清一下,我正在另一台机器上运行curl命令,实际上我正在运行单节点集群。据我所知,如果不使用clod提供程序,外部IP将处于挂起状态,除非您有类似
metallib
的负载平衡器实现。但是,唉,我现在已经搬到了kubeadm,一旦有任何更新,我会再次登录
$ curl -D- "http://172.1.1.x:2181"
curl: (28) Failed to connect to 172.1.1.x port 2181: Timed out