我有一个kubernetes单节点设置(请参阅https://coreos.com/kubernetes/docs/latest/kubernetes-
on-vagrant-single.html
)
我有一个服务和一个创建吊舱的复制控制器。这些Pod需要连接到同一服务中的其他Pod(注意:这最终是使我可以使mongo运行带有副本集(非localhost),但是此简单示例演示了mongo的问题)。
当我从任何节点连接到服务时,它将(按预期方式)分发到其中一个Pod。这将一直工作到负载平衡到自身(我所在的容器)为止。然后它无法连接。
抱歉,很冗长,但是我将附加所有文件,以便您可以在此小示例中看到我的工作。
Dockerfile:
FROM ubuntu
MAINTAINER Eric H
RUN apt-get update; apt-get install netcat
EXPOSE 8080
COPY ./entry.sh /
ENTRYPOINT ["/entry.sh"]
这是入口
#!/bin/bash
# wait for a connection, then tell them who we are
while : ; do
echo "hello, the date=`date`; my host=`hostname`" | nc -l 8080
sleep .5
done
建立dockerfile
docker build -t echoserver .
标记并上传到我的k8s集群的注册表
docker tag -f echoserver:latest 127.0.0.1:5000/echoserver:latest
docker push 127.0.0.1:5000/echoserver:latest
这是我的复制控制器
apiVersion: v1
kind: ReplicationController
metadata:
labels:
role: echo-server
app: echo
name: echo-server-1
spec:
replicas: 3
template:
metadata:
labels:
entity: echo-server-1
role: echo-server
app: echo
spec:
containers:
-
image: 127.0.0.1:5000/echoserver:latest
name: echo-server-1
ports:
- containerPort: 8080
最后,这是我的服务
kind: Service
metadata:
labels:
app: echo
role: echo-server
name: echo-server-1
name: echo-server-1
spec:
selector:
entity: echo-server-1
role: echo-server
ports:
- port: 8080
targetPort: 8080
创建我的服务 kubectl create -f echo.service.yaml
创建我的rc kubectl create -f echo.controller.yaml
获取我的POD
kubectl get po
NAME READY STATUS RESTARTS AGE
echo-server-1-jp0aj 1/1 Running 0 39m
echo-server-1-shoz0 1/1 Running 0 39m
echo-server-1-y9bv2 1/1 Running 0 39m
获取服务IP
kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
echo-server-1 10.3.0.246 <none> 8080/TCP entity=echo-server-1,role=echo-server 39m
进入其中一个豆荚 kubectl exec -t -i echo-server-1-jp0aj /bin/bash
现在多次连接到该服务…它将为我提供所有Pod的应用程序消息,除了到达其自身时会挂起。
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:02:38 UTC 2016; my host=echo-server-1-y9bv2
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
^C
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:02:43 UTC 2016; my host=echo-server-1-shoz0
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
^C
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:19 UTC 2016; my host=echo-server-1-y9bv2
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:23 UTC 2016; my host=echo-server-1-shoz0
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:26 UTC 2016; my host=echo-server-1-y9bv2
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
hello, the date=Mon Jan 11 22:31:27 UTC 2016; my host=echo-server-1-shoz0
root@echo-server-1-jp0aj:/# nc 10.3.0.246 8080
如何配置事物,以便服务的所有成员都可以连接到所有其他成员,包括自身?
感谢所有在GitHub上提供帮助的人。
解决方法如下:
tanen01评论于2月4日在k8s v1.1.7稳定版中看到了相同的问题
问题发生于:
kube-proxy --proxy-mode=iptables
一旦我将其更改为:
--proxy-mode=userspace
(也是默认值),然后它将再次起作用。
因此,如果遇到这种情况,请--proxy-mode
在启动时尝试将其关闭kube-proxy
。
我的入口pod无法通过IP访问两个集群IP服务。有很多其他集群IP服务它没有到达困难。包括在同一个命名空间中。另一个pod到达服务没有问题(我在同一个命名空间中尝试了默认后端,一切正常)。 我应该去哪里?以下是我的实际服务,它无法到达第一个,但可以到达第二个: 我的入口吊舱:
错误:Redis连接到Redis:6379失败-连接econnrejected 172.20.0.2:6379 码头集装箱 Redis工作: docker-compose.yml
和DocerFile 很好笑因为...首先,我想把容器的名称“localhost”更改为另一个。但当我改变的时候,我不能运行Spring Bot应用程序,即使从IntelliJ。我在docker中创建了MySql的映像,并尝试在IntelliJ中进行连接。这是warking但当我想使用SpringBoot应用程序在caontainer然后是问题。我还没找到解决办法。我会非常感谢每一个帮助。 我在这
我在AWS上设置了一个OpenVPN EC2实例,它有如下安全组 我下载了文件,可以像(也可以在导入配置后通过网络管理器)。一切都好。 现在我想这样做,我的其他EC2实例(托管实际应用程序)只能通过VPN访问,不能直接通过SSH连接。其中一个EC2实例的安全组如下所示 这里,我允许端口22上来自OVPN服务器的私有IPv4地址的入站流量。 但是,如果我连接到VPN并尝试通过SSH连接到应用EC2实
问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;