【问题标题】:Setup Flannel for kubernetes in AWS在 AWS 中为 kubernetes 设置 Flannel
【发布时间】:2017-02-05 09:20:03
【问题描述】:

我正在尝试在 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 设置 /atomic.io/network/config '{"网络":"172.31.0.0/20","后端": {“类型”:“aws-vpc”}}'

  5. 启动服务并创建k8s rc

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

Sep 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) ),重用

Sep 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

Sep 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路由表

Destination Gateway Genmask Flags 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

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

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

【问题讨论】:

    标签: amazon-web-services kubernetes aim flannel


    【解决方案1】:

    问题已解决。

    第一期

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

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

    背景是法兰绒检查“实例的源/目标检查”是否已禁用。不得不说,如果日志能提到“please go to aws console to disable source destionation check”应该会好很多。

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

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

    第二期

    “超出请求限制”的错误是由于 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 (InvalidParameterValue)

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 2017-10-11
      • 2023-03-16
      • 2017-09-25
      • 2018-05-30
      • 2020-10-06
      • 2018-02-26
      • 2017-10-14
      • 2017-10-05
      相关资源
      最近更新 更多