我正在尝试在 AWS 上设置 Flannel 0.5,以便让 pod 相互通信。我按照https://coreos.com/blog/introducing-flannel-0.5.0-with-aws-and-gce/上的指南进行操作
使用 AIM 创建了三个“Amazon EC2”实例,其角色策略为AmazonVPCFullAccess。AmazonVPCFullAccess 包括所有权限。我的 VPC 是“172.31.0.0/16”
禁用三个实例的“实例的源/目标检查”
- 安装 k8s、flannel 并配置它们。
- 通过命令将类型设置为“aws-vpc”:
etcdctl set /atomic.io/network/config '{"Network":"172.31.0.0/20","Backend": {"Type": "aws-vpc"}}'
启动服务并创建一个 k8s rc
然后我在 /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