OpenShift 3起源持续卷问题

时间:2016-01-11 22:04:53

标签: kubernetes openshift-origin

我们在尝试使用持久卷时遇到openhift aws部署问题。

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

- 无法为pod安装卷" mysql-4-uizxn_persistent-test":云提供商不支持卷 - 错误同步窗格,跳过:云提供商不支持卷

我们在每个节点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 个答案:

答案 0 :(得分: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": "*"
            }
          ]
        }
      }
    ]
  }
}

答案 1 :(得分: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文档here

中介绍了AWS凭据的创建

答案 2 :(得分: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>  

答案 3 :(得分:0)

@ stran58

如果您按上述方式导出了AWS凭据,通过systemctl启动了主服务并获得该错误,请尝试如下设置AWS凭据:

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

希望有所帮助。