Kubernetes в облачном провайдере AWS

Я установил CentOS Atomic Host в качестве операционной системы для кубернетов на AWS.

Все работает нормально, но вроде что-то упустил.

Я не настраивал облачного провайдера и не могу найти по нему никакой документации.

В этом вопросе я хочу знать: 1. Какие возможности облачный провайдер дает кубернетам? 2. Как настроить облачного провайдера AWS?

UPD 1: не работает внешний балансировщик нагрузки; Я еще не тестировал awsElasticBlockStore, но подозреваю, что это не работает.

UPD 2: сведения об услуге:

$ kubectl get svc nginx-service-aws-lb -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2016-01-02T09:51:40Z
  name: nginx-service-aws-lb
  namespace: default
  resourceVersion: "74153"
  selfLink: /api/v1/namespaces/default/services/nginx-service-aws-lb
  uid: 6c28b718-b136-11e5-9bda-06c2feb29b0d
spec:
  clusterIP: 10.254.172.185
  ports:
  - name: http-proxy-protocol
    nodePort: 31385
    port: 8080
    protocol: TCP
    targetPort: 8080
  - name: https-proxy-protocol
    nodePort: 31370
    port: 8443
    protocol: TCP
    targetPort: 8443
  selector:
    app: nginx
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

person emcpow2    schedule 24.12.2015    source источник


Ответы (2)


Я не могу говорить ни с битами ProjectAtomic, ни с KUBERNETES_PROVIDER env-var, поскольку у меня был опыт работы с инициатором CoreOS. Я расскажу о своем опыте и посмотрю, поможет ли это вам углубиться в свою настройку.

Прежде всего, абсолютно необходимо, чтобы контроллер EC2 и рабочие машины EC2 имели правильный роль IAM, которая позволит машинам выполнять вызовы AWS от имени вашей учетной записи. Это включает в себя такие вещи, как подготовка ELB и работа с томами EBS (или присоединение тома EBS к себе, в случае работника). Без этого ваша облачная конфигурация никуда не денется. Я почти уверен, что полезные данные IAM определены где-то помимо этих .go файлов, которые трудно читать, но это самая быстрая ссылка, которая у меня была под рукой, чтобы показать, что нужно.

К счастью, ответ на этот вопрос и тот, о котором я собираюсь поговорить, сосредоточены вокруг apiserver и controller-manager. Их конфигурация и журналы, которые они выводят.

Оба тега apiserver и controller-manager имеет аргумент, указывающий на файл конфигурации облака на диске, который, к сожалению, нигде не документирован, кроме источник. Это поле Zone, по моему опыту, необязательное (как говорится в комментариях). Однако именно KubernetesClusterTag заставил меня проследить за этим полем в коде, чтобы увидеть, что оно делает.

Если ваш опыт похож на мой, вы увидите в журналах докеров controller-manager кучу сообщений об ошибках о том, как он создал ELB, но не смог найти никаких подсетей для подключения к нему; (этот бит «журналов докеров», конечно, предполагает, что ProjectAtomic также использует докеры для запуска демонов Kubernetes).

Как только я прикрепил Tag с именем KubernetesCluster и установил для каждого экземпляра Tag одну и ту же строку (это может быть что угодно, AFAIK), тогда aws_loadbalancer смог найти подсеть в VPC, и он подключил узлы к ELB, и все было круто - кроме той части, что прямо сейчас он может создавать только выходящие в Интернет ELB. :-(

Для ясности: aws.cfg содержит поле с именем KubernetesClusterTag, которое позволяет вам переопределить Tag, которое будет искать Kubernetes; без какого-либо значения в этом файле Kuberenetes будет использовать Tag имя KubernetesCluster.

Я надеюсь, что это поможет вам, и я надеюсь, что это поможет другим, потому что как только Kubernetes работает, это просто потрясающе.

person mdaniel    schedule 25.01.2016
comment
Привет, Даниэль, спасибо за ответ. Я нашел роли AWS IAM в репозитории kubernetes. - person emcpow2; 26.01.2016
comment
относительно атомарного хоста, проверьте этот документ docs.openshift.org/latest / install_config / - person Muayyad Alsadi; 11.07.2016

  1. Какие возможности облачный провайдер дает кубернетам?

Некоторые известные мне функции: внешний балансировщик нагрузки, постоянные тома.

  1. Как настроить облачного провайдера AWS?

Существует переменная окружения с именем KUBERNETES_PROVIDER, но кажется, что переменная окружения имеет значение только тогда, когда люди запускают кластер k8s. Поскольку вы сказали «все работает нормально», я полагаю, что вам не нужна дополнительная настройка для использования функций, о которых я упоминал выше.

person caesarxuchao    schedule 27.12.2015