2016-10-27 2 views
3

У меня есть простой контроллер репликации YAML файл, который выглядит следующим образом:В Kubernetes, как установить имена контейнеров при использовании контроллеров репликации?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: nginx 
spec: 
    replicas: 3 
    selector: 
    app: nginx 
    template: 
    spec: 
     containers: 
     - image: library/nginx:3.2 
     imagePullPolicy: IfNotPresent 
     name: nginx 
     ports: 
     - containerPort: 80 
    metadata: 
     labels: 
     app: nginx 

И после запуска этого контроллера репликации, я буду получать 3-х различных стручки, чьи имена «Nginx-ххх», где «ххх» представляет собой случайная строка букв и цифр.

Что я хочу, это указать имена для модулей, созданных контроллером репликации, так что имя контейнера может быть «nginx-01», «nginx-02», «nginx-03». И еще больше, если, скажем, почему-то снижается «nginx-02», и контроллер репликации автоматически создаст еще один модуль nginx, и я хочу, чтобы это новое имя nginx pod оставалось как «nginx-02».

Интересно, возможно ли это? Заранее спасибо.

ответ

3

Если вы используете рабочие нагрузки без состояния, я не могу себе представить, почему вы хотели бы иметь фиксированные идентификаторы, связанные с каждым объектом, если вы намерены запустить N реплик конкретного контейнера.

Невозможно сделать это с помощью ReplicaSet/ReplicationController. Когда контроллер создает новые контейнеры, он будет иметь сгенерированный суффикс имени после имени pod.

Если это то, что вы действительно хотите (фиксированный идентификатор/порядковый индекс), свойство удовлетворяет PetSet resource, которое находится в альфа-версии Kubernetes v1.4. Тем не менее, он также поставляется с дополнительными гарантиями, которые вам, вероятно, не нужны.

+0

Например, я хотел бы, чтобы мои модули знали о именах FQDN, на которые они доступны. Прямо сейчас, POD не может даже определить свой IP-адрес из env vars (например, 10-42-25-26.dev.pod.cluster.local), как кажется. Основой этого требования было бы создание решения для мониторинга (например, приборной панели Hystrix/Turbine). Преобразование контейнеров без гражданства в StatefulSets просто для выполнения вышеуказанных швов цели, чтобы быть взломом. –

+0

избегайте использования переменных среды, поскольку это было предназначено для обратной совместимости со старым выпуском докеров, у которого есть функция ссылки, теперь он устарел. хост, переменная окружения порта потребует, чтобы вы делали что-то в порядке. лучше всего выставлять контейнеры в качестве службы, шаблоны шаблонов по умолчанию являются частью реплик-набора и что набор реплик, открытый как служба, и DNS-кластер всегда будет динамически указывать на правый адрес кластера и обновлять fdqn, как в service.namespace.svc.cluster. локальное или любое базовое имя кластера по умолчанию, которое вы переопределили – Walid

Смежные вопросы