因此,我已经使用关于CoreOS手动安装指南的Kubernetes启动并运行了一个Kubernetes集群。
$ kubectl get no
NAME STATUS AGE
coreos-master-1 Ready,SchedulingDisabled 1h
coreos-worker-1 Ready 54m
$ kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health": "true"}
etcd-2 Healthy {"health": "true"}
etcd-1 Healthy {"health": "true"}
$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default curl-2421989462-h0dr7 1/1 Running 1 53m 10.2.26.4 coreos-worker-1
kube-system busybox 1/1 Running 0 55m 10.2.26.3 coreos-worker-1
kube-system kube-apiserver-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-controller-manager-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-proxy-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
kube-system kube-proxy-coreos-worker-1 1/1 Running 0 58m 192.168.0.204 coreos-worker-1
kube-system kube-scheduler-coreos-master-1 1/1 Running 0 1h 192.168.0.200 coreos-master-1
$ kubectl get svc --all-namespaces
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes 10.3.0.1 <none> 443/TCP 1h与指南一样,我已经设置了一个服务网络10.3.0.0/16和一个pod网络10.2.0.0/16。豆荚网络似乎很好,因为繁忙箱和卷曲容器得到IP。但是,服务网络也存在问题。最初,我在部署kube-dns时遇到过这样的情况:无法到达服务IP 10.3.0.1,因此kube无法启动所有容器,最终DNS无法工作。
在卷曲舱里,我可以复制这个问题:
[ root@curl-2421989462-h0dr7:/ ]$ curl https://10.3.0.1
curl: (7) Failed to connect to 10.3.0.1 port 443: No route to host
[ root@curl-2421989462-h0dr7:/ ]$ ip route
default via 10.2.26.1 dev eth0
10.2.0.0/16 via 10.2.26.1 dev eth0
10.2.26.0/24 dev eth0 src 10.2.26.4容器中只有默认路径,这似乎是可以的。据我所知,请求(到默认路由)应该由工作节点上的kube-proxy拦截,然后转发到主节点上的代理,在主节点上通过iptables将IP转换到主公共IP。
网桥/netfilter sysctl设置似乎存在一个常见问题,但在我的设置中,这似乎很好:
core@coreos-worker-1 ~ $ sysctl net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-iptables = 1我现在很难排除故障,因为我不了解服务IP是用来做什么的,服务网络应该如何在流量方面工作,以及如何最好地调试它。
以下是我的问题:
谢谢!
发布于 2017-03-13 09:41:53
Sevice网络为服务提供固定的IP。它不是一个可路由的网络(所以不要期望ip ro显示任何东西,ping也不会工作),而是一个集合iptables规则,由kube在每个节点上管理(参见节点上的iptables -L; iptables -t nat -L,而不是Pods)。这些虚拟IP (见图!)充当端点的负载平衡代理(kubectl get ep),它通常是Pods的端口(但并不总是),具有服务中定义的一组特定的标签。
服务网络上的第一个IP是为了到达本身.它正在监听端口443 (kubectl describe svc kubernetes)。
在每个网络/群集设置上,故障排除是不同的。我一般会查证:
/etc/kubernetes/manifests/kube-proxy.yaml创建的静态Podsuserspace模式。同样,细节取决于您的设置。对你来说,它就在我上面提到的文件里。将--proxy-mode=userspace作为参数追加到每个节点上如果你留下评论,我会回复你的。
发布于 2018-02-02 01:16:44
我也遇到了同样的问题,对我起作用的最终解决方案是在集群中的所有节点上启用IP转发,而我忽略了这一点。
$ sudo sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1服务IP和DNS随后立即开始工作。
发布于 2017-05-17 12:32:58
我也有同样的问题,原来是kube-proxy.yaml中的一个配置问题,对于“主”参数,我的ip地址是in --master=192.168.3.240,但是它实际上需要一个url类似-master=https://192.168.3.240。
成功地使用--代理模式=iptables (v1.6.x)
https://stackoverflow.com/questions/42705432
复制相似问题