前言:因为我们现在AWS使用方式与常规有一些差异,如下图所示:
我们是使用另外一个AWS账号通过各个环境ram-role的授权连接进入到各个环境的,所以uat的账号id并不是我们现在这个7727开头的id。因为EKS集群的连接会根据创建时的iam用户而创建最高管理权,所以一开始只能通过这个iam用户下的授权的实例才能使用kubectl正确的使用eks集群。否则会因为权限问题,无法控制eks集群。因此,在创建 Amazon EKS 集群之前,您必须使用以下 IAM 策略创建 IAM 角色:
1.创建好eks集群所需要的iam用户,并记录下用户arn:
2.配置集群 在控制台创建eks集群时,需要注意的是这个集群服务角色的选项,我们需要去手动创建出来这个集群服务角色
一般只需要第一个策略,把它添加进去,iam-role就可以出现了。
vpc子网的选择上,假设已经创建好了3个public子网,3个private子网的vpc网段。因为kuberneters集群不需要每个节点都分配一个IP地址,所以采用私有网段都通过NAT网关出去访问网络的方式,后面的node节点都会采用3个可用区3个private网段的方式。这里也选择private子网。
其他没什么需要特别注意的,等待集群创建完成。
3.设置节点组 因为Amazon EKS是一项托管服务。Amazon EKS预置和管理Kubernetes控制平面,也就是Master节点。 Master节点中的API server,Controller manager,Scheduler与ETCD等由我们维护,客户不需要也无法管理。 总体来说,Kubernetes 由两大组件构成: - 管理容器在群集上的启动时间和位置并监控容器状态的控制平面,由我们AWS托管。 - 运行容器的工作线程节点,由客户创建管理生命周期。所以我们就只需要管理好node节点就好了。
eks创建node-group会创建一个autoscaling组,后面扩展节点数量和更改实例类型是比较方便的。
这个节点iam角色也需要自己手动进行创建,需要的权限如下:
尽量不要选择启动模板来启动node-group
磁盘大小不能调整在node-group里面修改,后期应该会比较麻烦。所以还是尽量不要选择这种方式
开启对节点的ssh访问权限就可以在后期通过kubectl实例或者同一个vpc的公有子网中访问所有的节点机器进行操作查看。
设置完成后,node-group就会一会创建出来
设置实例名称的标签:
在node-group的auto scaling Groups里添加一下这个标签,创建出来的ec2实例机器就会按照这个值命名了。
4.使用绑定了创建了iam用户的实例机器,使用kubectl连接eks集群。 4-1.安装awscli (Linux x86 (64位))
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip
sudo ./aws/install
4-2.使用aws configure 导入iam用户的access key 和eks的使用区域
4-3.使用aws sts get-caller-identity 验证ARN 是否正确
出现这个信息就是绑定成功了。
4-3.使用aws eks update-kubeconfig连接eks集群
aws eks update-kubeconfig -name
至此,eks集群就可以使用kubectl进行管理使用了。
5.给其他iam用户授权eks的管理权限,主要针对控制台对于node节点信息的查看和使用其他AWS iam用户使用aws eks update-kubeconfig 连接eks的权限。 未授权前,如果使用node-group的iam角色的权限,则只有基本的查看权限。
如上图所示。
授权方法如下:
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
mapRoles: |
- rolearn: <arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF>
username: <system:node:{{EC2PrivateDNSName}}>
groups:
- <system:bootstrappers>
- <system:nodes>
mapUsers: | #在这里添加需要添加需要授权的iam用户
- userarn: <arn:aws:iam::111122223333:user/admin>
username: <admin>
groups:
- <system:masters>
- userarn: <arn:aws:iam::111122223333:user/ops-user>
username: <ops-user>
groups:
- <system:masters>
范例如下:
因为我这个Wake用户已经拥有管理权限,并且不会显示到这个配置文件中,所以添加完所需要的iam用户的信息后,使用这个用户登陆控制台就跟我这个Wake的权限一样。
更多权限的设置和iam用户分配可以参考这篇文章: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
评论区