0

我正在尝试在 AWS 上设置 Flannel 0.5,以便让 pod 相互通信。我按照https://coreos.com/blog/introducing-flannel-0.5.0-with-aws-and-gce/上的指南进行操作

  1. 使用 AIM 创建了三个“Amazon EC2”实例,其角色策略为AmazonVPCFullAccess。AmazonVPCFullAccess 包括所有权限。我的 VPC 是“172.31.0.0/16”

  2. 禁用三个实例的“实例的源/目标检查”

  3. 安装 k8s、flannel 并配置它们。
  4. 通过命令将类型设置为“aws-vpc”:

    etcdctl set /atomic.io/network/config '{"Network":"172.31.0.0/20","Backend": {"Type": "aws-vpc"}}'

  5. 启动服务并创建一个 k8s rc

  6. 然后我在 /var/log/messages 中得到错误:

9 月 27 日 15:18:54 ip-172-31-0-242 flanneld: I0927 15:18:54.023391 02400 etcd.go:129] 找到当前 IP (172.31.0.242) 的租约 (172.31.1.0/24),重用

9 月 27 日 15:18:54 ip-172-31-0-242 flanneld: I0927 15:18:54.024120 02400 etcd.go:84] 获得子网租约:172.31.1.0/24

Sep 27 15:18:54 ip-172-31-0-242 flanneld: I0927 15:18:54.389834 02400 awsvpc.go:106] 警告 - 禁用源目标检查失败:您无权执行此操作。(未经授权的操作)

9 月 27 日 15:18:54 ip-172-31-0-242 flanneld: I0927 15:18:54.389882 02400 awsvpc.go:116] RouteRouteTableID: rtb-9893a9f1

9 月 27 日 15:18:54 ip-172-31-0-242 flanneld: E0927 15:18:54.511297 02400 network.go:71] 无法初始化网络(类型 aws-vpc):无法添加路由 172.31.1.0/ 24:无法在路由表 rtb-9893a9f1 (InvalidParameterValue) 中为 172.31.1.0/24 创建比本地路由 172.31.0.0/16 更具体的路由

日志显示类型配置“aws-vpc”有效。Flannel 获得了正确的 AWS 路由表“rtb-9893a9f1”,这意味着 AIM 角色配置也可以工作。

但是日志说“UnauthorizedOperation”和“InvalidParameterValue”......我现在不知道这个!

顺便说一句, 不设置 IAM 角色并输入 aws-vpc,启动 k8s、etcd 和 flannel 后,路由表包含接口 flannel:

[root@ip-172-31-14-47 ~]# route -n 内核IP路由表

目标网关 Genmask 标志 Metric Ref Use Iface

0.0.0.0 172.31.0.1 0.0.0.0 UG 0 0 0 eth0

172.31.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0

172.31.0.0 0.0.0.0 255.255.240.0 U 0 0 0 法兰绒0

172.31.14.0 0.0.0.0 255.255.255.0 U 0 0 0 码头0

虽然路由有接口法兰绒,但法兰绒无法工作。原因很清楚:AWS 不遵循一个实例的内部路由表。

但是设置了AIM角色和类型后,flannel不能再添加接口了,遇到UnauthorizedOperation和InvalidParameterValue的异常,虽然我已经保证了角色为AmazonVPCFullAccess的AIM

4

1 回答 1

1

问题解决了。

首要问题

下面的警告可以忽略。这发生在 flannel awsvpc.go 调用“m.disableSrcDestCheck(instanceID, ec2c)”时,它只是信息级别的日志。

log.Infof("Warning-disable source destination check failed: %v", err)

背景是法兰绒检查“实例的源/目标检查”是否已禁用。我们不得不说,如果日志可以提及“请转到 aws 控制台以禁用源目标检查”,那应该会好得多。

警告 - 禁用源目标检查失败:您无权执行此操作。(未经授权的操作)

虽然上面的日志实际上并不严重,但这误导了我,我认为我配置策略错误并且在权限上花费了太多时间。

第二期

“超出请求限制”的错误是因为 aws API 重试次数过多。有许多可能的条件“超过限制”超过每个路由表的 50 个条目。停止 flannel 一段时间后,aws api 再次提供服务。或者 aws api 总是拒绝请求。

第三期

最后,破坏flannel的根本原因是路由表冲突。分配另一个子网后,问题得到解决。法兰绒日志是正确的,上面写着“InvalidParameter”。一开始被第一个“UnauthorizedOperation”误导,试图改变权限策略……

network.go:71] 无法初始化网络(类型 aws-vpc):无法添加路由 172.31.1.0/24:无法在路由表中为 172.31.1.0/24 创建比本地路由 172.31.0.0/16 更具体的路由rtb-9893a9f1(无效参数值)

于 2016-09-28T08:26:40.883 回答