2017-02-03 111 views
2

我在裸机上使用CoreOS 1235.6.0中的Kubernetes 1.5.2,覆盖网络使用calico v1.0.2。容器获得正确的IP地址,但它们的路由不匹配:pod路由与IP不匹配

/ # ip addr show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
     valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
     valid_lft forever preferred_lft forever 
2: [email protected]: <NOARP> mtu 1480 qdisc noop qlen 1 
    link/ipip 0.0.0.0 brd 0.0.0.0 
4: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 82:df:73:ee:d1:15 brd ff:ff:ff:ff:ff:ff 
    inet 10.2.154.97/32 scope global eth0 
     valid_lft forever preferred_lft forever 
    inet6 fe80::80df:73ff:feee:d115/64 scope link 
     valid_lft forever preferred_lft forever 
/# route -n 
Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
0.0.0.0   169.254.1.1  0.0.0.0   UG 0  0  0 eth0 
169.254.1.1  0.0.0.0   255.255.255.255 UH 0  0  0 eth0 

因此,pod网络被破坏。传出流量超时,无论是ICMP还是TCP,以及是否是主机,同一主机上的另一个Pod,apiserver或公共Internet。唯一有效的交通工具是这个吊舱自己说话。

这里是我如何运行kubelet:

[Unit] 
After=network-online.target 
Wants=network-online.target 
[Service] 
Environment=KUBELET_VERSION=v1.5.2_coreos.0 
Environment="RKT_OPTS=--uuid-file-save=/var/run/kubelet-pod.uuid \ 
    --volume var-log,kind=host,source=/var/log \ 
    --mount volume=var-log,target=/var/log \ 
    --dns=host \ 
    --volume cni-conf,kind=host,source=/etc/cni \ 
    --mount volume=cni-conf,target=/etc/cni \ 
    --volume cni-bin,kind=host,source=/opt/cni/bin \ 
    --mount volume=cni-bin,target=/opt/cni/bin" 
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests 
ExecStartPre=/usr/bin/mkdir -p /var/log/containers 
ExecStartPre=/usr/bin/mkdir -p /etc/cni/net.d 
ExecStartPre=/usr/bin/mkdir -p /opt/cni/bin 
ExecStartPre=-/usr/bin/rkt rm --uuid-file=/var/run/kubelet-pod.uuid 
ExecStart=/usr/lib/coreos/kubelet-wrapper \ 
    --allow-privileged=true \ 
    --api-servers=https://master.example.com \ 
    --cluster_dns=10.3.0.10 \ 
    --cluster_domain=cluster.local \ 
    --container-runtime=docker \ 
    --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml \ 
    --network-plugin=cni \ 
    --pod-manifest-path=/etc/kubernetes/manifests \ 
    --tls-cert-file=/etc/kubernetes/ssl/worker.pem \ 
    --tls-private-key-file=/etc/kubernetes/ssl/worker-key.pem 
ExecStop=-/usr/bin/rkt stop --uuid-file=/var/run/kubelet-pod.uuid 
Restart=always 
RestartSec=10 

[Install] 
WantedBy=multi-user.target 

的印花布配置是the standard one

我有什么错误配置?

回答

1

容器内的寻址和路由看起来很好。主机容器外的路线会更有趣。鉴于你所看到的(veth创建的,这意味着CNI插件正在工作),我会检查策略控制器和标准节点是否正常运行(例如,没有错误日志/重新启动循环)。

您可能还想尝试获得社区的在线支持:注册在https://slack.projectcalico.org