Docker Can';我不能通过互联网访问我的本地kubernetes服务 实施目标
将运行在kubernetes上的Zookeeper实例公开到internet (底部提供了配置和版本信息) 实施尝试 我目前有一个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
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