【问题标题】:pod routes don't match IPpod 路由与 IP 不匹配
【发布时间】:2017-02-03 21:40:31
【问题描述】:

我在裸机上使用 CoreOS 1235.6.0 中的 Kubernetes 1.5.2,覆盖网络使用 calico v1.0.2。容器正在获取正确的 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: tunl0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
4: eth0@if9: <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。唯一有效的流量是这个 pod 与自己对话。

这是我运行 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

calico 配置为the standard one

我配置错了什么?

【问题讨论】:

    标签: docker kubernetes coreos project-calico


    【解决方案1】:

    容器内的寻址和路由看起来不错。主机上容器外的路由会更有趣。鉴于您所看到的(已创建 veth,这意味着 CNI 插件正在工作),我将检查策略控制器和 calico-node 是否正常运行(例如,没有错误日志/重启循环)。

    您可能还想尝试从社区获得实时支持:注册https://slack.projectcalico.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2021-01-21
      • 2021-12-09
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多