容器服务Kubernetes需要通过节点的RAM角色权限来访问云服务。早期创建的集群没有设置相应的RAM角色,如果不先对进群内的节点进行RAM角色绑定,而直接升级集群的话,则会影响云监控、ingress和cloud-controller-manager等组件的正常工作。可以通过以下步骤手动为ECS 绑定RAM角色。
步骤1
首先,我们需要确认Kubernetes节点是否已经绑定了RAM角色。
打开阿里云ECS控制台。找到您需要查看的ECS实例,如图:
查看此台ECS中是否已经绑定RAM角色。如图:
如果此ECS实例已经绑定RAM角色,则无需进行处理。若此ECS实例没有绑定RAM角色,请您按照如下流程为您的Kubernetes节点绑定RAM角色。
步骤2
新建RAM角色。打开RAM控制台的角色管理界面。点击右上角的【新建角色】-【服务角色】-【ECS云服务器】,输入角色名KubernetesNodeRole,最后点击创建。
步骤3
创建授权策略。打开RAM控制台的策略管理界面。点击右上角的【新建授权策略】-【空白模板】
出现如下界面,输入授权策略名称Kubernetes-policy,输入下列策略内容。
策略内容:
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:Describe*",
"ecs:AttachDisk",
"ecs:CreateDisk",
"ecs:CreateSnapshot",
"ecs:CreateRouteEntry",
"ecs:DeleteDisk",
"ecs:DeleteSnapshot",
"ecs:DeleteRouteEntry",
"ecs:DetachDisk",
"ecs:ModifyAutoSnapshotPolicyEx",
"ecs:ModifyDiskAttribute",
"ecs:CreateNetworkInterface",
"ecs:DescribeNetworkInterfaces",
"ecs:AttachNetworkInterface",
"ecs:DetachNetworkInterface",
"ecs:DeleteNetworkInterface",
"ecs:DescribeInstanceAttribute"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"cr:Get*",
"cr:List*",
"cr:PullRepository"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"slb:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"cms:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"vpc:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"log:*"
],
"Resource": [
"*"
],
"Effect": "Allow"
},
{
"Action": [
"nas:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
]
}
步骤4
进入RAM控制台的角色管理界面,找到刚才创建的角色KubernetesNodeRole。
点击【角色授权策略】-【编辑授权策略】,将Kubernetes-policy加入到已选授权策略中,最后点击确定。
步骤5
打开阿里云ECS控制台。找到您要添加RAM角色的ECS实例,点击【更多】-【实例设置】-【授予/收回RAM角色】
选择名为KubernetesNodeRole的RAM角色,点击确定,这样就完成了手动为Kubernetes节点添加阿里云RAM角色的整个流程。