2

尝试使用持久卷时,我们的 openshift aws 部署存在问题。

这些是尝试部署 mysql-persistent 实例时出现的一些错误。

-无法为 pod“mysql-4-uizxn_persistent-test”挂载卷:云提供商不支持卷 -错误同步 pod,跳过:云提供商不支持卷

我们在每个节点 node-config.yaml 上添加了以下内容

kubeletArguments:
  cloud-provider:
    - "aws"
  cloud-config:
    - "/etc/aws/aws.conf"

并将以下内容添加到我们的 master-config.yaml

kubernetesMasterConfig:
  apiServerArguments:
    cloud-provider:
      - "aws"
    cloud-config:
      - "/etc/aws/aws.conf"
  controllerArguments:
    cloud-provider:
      - "aws"
    cloud-config:
      - "/etc/aws/aws.conf"

不确定我们是否只是遗漏了某些东西,或者是否存在已知问题/解决方法。

还有一个问题是 openshift 或 kubernetes 如何知道配置文件已更改?

也只是为了给您一些背景信息,我们使用openshift-ansible来部署我们的环境。

4

4 回答 4

1

文档说明导出环境变量的方式有点不准确。它们需要添加到 systemd 单元文件引用的环境中,或者需要授予节点适当的 IAM 权限。

要在环境中为节点配置凭据,请将以下内容添加到 /etc/sysconfig/origin-node(假设 Origin 1.1):

AWS_ACCESS_KEY_ID=<key id>
AWS_SECRET_ACCESS_KEY=<secret key>

或者,可以为节点分配具有适当权限的 IAM 角色。以下 cloudformation 资源片段为节点创建具有适当权限的角色:

"NodeIAMRole": {
  "Type": "AWS::IAM::Role",
  "Properties": {
    "AssumeRolePolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": { "Service": [ "ec2.amazonaws.com" ] },
          "Action": [ "sts:AssumeRole" ]
        }
      ]
    },
    "Policies": [
      {
        "PolicyName": "demo-node-1",
        "PolicyDocument": {
          "Version" : "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "ec2:Describe*",
              "Resource": "*"
            }
          ]
        }
      },
      {
        "PolicyName": "demo-node-2",
        "PolicyDocument": {
          "Version" : "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "ec2:AttachVolume",
              "Resource": "*"
            }
          ]
        }
      },
      {
        "PolicyName": "demo-node-3",
        "PolicyDocument": {
          "Version" : "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "ec2:DetachVolume",
              "Resource": "*"
            }
          ]
        }
      }
    ]
  }
}
于 2016-01-19T17:04:48.597 回答
0

@stran58

如果您如上所述导出 AWS 凭证,通过 systemctl 启动主服务并收到该错误,那么尝试像这样设置 AWS 凭证怎么样:

systemctl set-environment AWS_SECRET_ACCESS_KEY=xxx
systemctl set-environment AWS_ACCESS_KEY_ID=xxx

希望有帮助。

于 2016-03-03T08:54:21.653 回答
0

您是否在 IAM 控制台的管理员组中设置和配置了您的用户?已经有一段时间了,但我想我在 AWS 上试验 OSE 时遇到了同样的问题,这就是最终解决的问题。

https://console.aws.amazon.com/iam/home#home

我将我的用户添加到管理员组中(不记得我是否必须先创建该组然后将我的用户添加到其中)。然后我附上了两个政策:

   EC2FullAccess and AdministratorAccess

此外,请确保导出密钥对并重新启动主节点和节点服务:

    export AWS_ACCESS_KEY_ID=<key id>  
    export AWS_SECRET_ACCESS_KEY=<secret key>  
于 2016-01-12T15:06:13.450 回答
0

看起来 OpenShift 的 AWS 提供商无法与 AWS API 对话。

根据https://docs.openshift.org/latest/install_config/configuring_aws.html,您应该使用您的 AWS 凭证导出这些变量:

export AWS_ACCESS_KEY_ID=<key id> export AWS_SECRET_ACCESS_KEY=<secret key>

此处的 AWS 文档中介绍了 AWS 凭证的创建

于 2016-01-12T14:56:19.463 回答