Режим управления стручка кластера K8S использование Statefulset (7)

В последний раз , когда мы говорим о развертывании управлять количество копия стручок контейнер, контейнер начинает снова после того, как повесить трубку , если вы можете, но если начало в том , что если MySQL Cluster, Zookeeper кластера, etcd этого кластера, который имеет номер документа, этот связаны, если потом повесить трубку один раз, после его запуска, будет ли кластер идентификатор изменить? Ответ да капризная.
То , что нет никакого другого вида модели контроллера? Конечно K8S дать мне предложить. [Statefulset]
, что сцена требует StatefulSet это? Официальная рекомендация дается в том , что при развертывании приложения для удовлетворения потребностей одного или нескольких из развертывания рекомендуется использовать StatefulSet

Стабильная, уникальная сетевая идентификация.
Стабильные, долговечные памяти.
Дежурный, элегантный и масштабируемое развертывание.
Дежурное, элегантное и удаление стоп.
Дежурное, автоматическое опрокидывание.
Далее, посмотрите на разницу между statefulset и развертывания:

Режим управления стручка кластера K8S использование Statefulset (7)

1, то мы начали практиковать то, что statefulset этой модели для развертывания кластера Zookeeper

Докер тянуть leolee32 / kubernetes-библиотека: kubernetes-zookeeper1.0-3.4.10
монтажных загрузок машины изображения ZK

2, Zookeeper необходимость в хранении использование кластера, где необходимо подготовить постоянные объемы (PersistentVolume, именуемого PV), я нахожусь здесь, чтобы создать 3 PV файл YAML для постоянного заявления томов чуть позже создал из трех узлов Zookeeper

3, создать ФВ; {стойкого-volume.yaml}

кот настойчивого-volume.yaml
вид: PersistentVolume
apiVersion: v1
метаданные:
имя: K8S-р-ZK1
аннотации:
volume.beta.kubernetes.io/storage-class: "ничего"
метка:
Тип: локальная
спецификации:
емкость:
хранение: 3Gi
accessModes:

  • ReadWriteOnce
    hostPath:
    путь: "/ Var / Библиотека / Zookeeper"
    persistentVolumeReclaimPolicy: Перезарядка

    вид: PersistentVolume
    apiVersion: v1
    метаданные:
    имя: K8S-р-ZK2
    аннотации:
    volume.beta.kubernetes.io/storage-class: "ничего"
    метка:
    Тип: локальная
    спецификации:
    емкость:
    хранение: 3Gi
    accessModes:

  • ReadWriteOnce
    hostPath:
    путь: "/ Var / Библиотека / Zookeeper"
    persistentVolumeReclaimPolicy: Перезарядка

    вид: PersistentVolume
    apiVersion: v1
    метаданные:
    имя: K8S-р-zk3
    аннотации:
    volume.beta.kubernetes.io/storage-class: "ничего"
    метка:
    Тип: локальная
    спецификации:
    емкость:
    хранение: 3Gi
    accessModes:

  • ReadWriteOnce
    hostPath:
    путь: «/ Var / Библиотека / Zookeeper»
    persistentVolumeReclaimPolicy: Перезарядка
    Режим управления стручка кластера K8S использование Statefulset (7)
    Режим управления стручка кластера K8S использование Statefulset (7)
    следующий стартовый бит, здесь найден р и не пвх никакой обязательной статуса доступен
    Режим управления стручка кластера K8S использование Statefulset (7)

4, развертывание кластера Zookeeper

кошка zookeeper.yaml
apiVersion: v1
вид: Сервис
метаданные:
Имя: ZK-HS
метка:
приложение: ZK
спецификация:
порты:

  • Порт: 2888
    Имя: сервер
  • Порт: 3888
    Имя: лидер выборы
    clusterIP: Нет
    Селектор:
    приложение: гк

    apiVersion: v1
    вид: Сервис
    метаданные:
    Имя: гк-CS
    метка:
    приложение: ZK
    спецификация:
    порты:

  • Порт: 2181
    Имя: клиент
    селектор:
    приложение: гк

    apiVersion: политика / v1beta1
    вид: PodDisruptionBudget
    метаданные:
    имя: гк-PDB
    спецификация:
    селектор:
    matchLabels:
    приложение: гк
    maxUnavailable: 1

    apiVersion: приложения / v1
    вид: StatefulSet
    метаданные:
    Название: гк
    спецификация:
    селектор:
    matchLabels:
    приложение: гк
    ServiceName: ZK-HS
    реплик: 3
    updateStrategy:
    Тип: RollingUpdate
    podManagementPolicy: Параллельный
    шаблон:
    метаданные:
    метки:
    Приложение: гк
    спецификация:
    Сродство :
    podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:

    • labelSelector:
      matchExpressions:
      • ключ: «приложение»
        Оператор: В
        значениях:
        • гк
          topologyKey: «kubernetes.io/hostname»
          контейнеры:
          • Название: kubernetes-Zookeeper
            imagePullPolicy: Всегда
            изображения: "leolee32 / kubernetes библиотека: kubernetes-zookeeper1.0-3.4.10"
            Ресурсы:
            запросы:
            память: "1GI"
            CPU: "0,5"
            портов:
          • containerPort: 2181
            Имя: клиент
          • containerPort: 2888
            Имя: сервер
          • containerPort: 3888
            Имя: лидер выборов
            команда:
          • ш
          • «старт-Zookeeper \
            --servers = 3 \
            --data_dir = / вар / Библиотека / Zookeeper / данные \
            --data_log_dir = / вар / Библиотека / Zookeeper / данные / Журнал \
            --conf_dir = / Opt / Zookeeper / конф \
            --client_port = 2181 \
            --election_port = 3888 \
            --server_port = 2888 \
            --tick_time = 2000 \
            --init_limit = 10 \
            --sync_limit = 5 \
            --heap = 512M \
            --max_client_cnxns = 60 \
            - snap_retain_count = 3 \
            --purge_interval = 12 \
            --max_session_timeout = 40000 \
            --min_session_timeout = 4000 \
            --log_level = INFO»
            readinessProbe:
            Exec:
            команда:
    • ш
    • "Zookeeper готовых 2181"
      initialDelaySeconds: 10
      timeoutSeconds: 5
      livenessProbe:
      Exec:
      команда:
    • ш
    • "Zookeeper готовых 2181"
      initialDelaySeconds: 10
      timeoutSeconds: 5
      volumeMounts:
      • имя: DATADIR
        mountPath: / вар / Библиотека / Zookeeper
        SecurityContext:
        RunAsUser: 1000
        fsGroup: 1000
        volumeClaimTemplates:
  • метаданные:
    имя: каталогу_данные
    аннотации:
    volume.beta.kubernetes.io/storage-class: "ничего"
    спецификация:
    accessModes: [ "ReadWriteOnce"]
    Ресурсы:
    запросы:
    хранение: 3Gi
    Режим управления стручка кластера K8S использование Statefulset (7)
    Режим управления стручка кластера K8S использование Statefulset (7)
    Режим управления стручка кластера K8S использование Statefulset (7)
    Режим управления стручка кластера K8S использование Statefulset (7)
    Режим управления стручка кластера K8S использование Statefulset (7)

После завершения начинают не создавать
Режим управления стручка кластера K8S использование Statefulset (7)
Режим управления стручка кластера K8S использование Statefulset (7)
не вверх смотреть на то , что причины
Режим управления стручка кластера K8S использование Statefulset (7)
найдены нет пользователей Zookeeper
создать и дать ему привилегию

Режим управления стручка кластера K8S использование Statefulset (7)
[Примечание] {гк для каждой установки машины должно быть выполнено}
найдено 2 был запущен, есть pening состояние, выше, не установлен в Генеральном
взгляд ДАВАЙТЕ в отчете журнала ошибок обнаружили , что
Режим управления стручка кластера K8S использование Statefulset (7)
использование кластера инициализации kubeadm, для по соображениям безопасности Pod не будут запланированы на главном узле, который должен сказать Мастер узел не участвует в рабочей нагрузке
мы делаем здесь также работает мастер, ограничиваются три машин
позволяют стручок развертывания мастер - узел, используйте следующую команду:
kubectl порча узлы --all node-role.kubernetes.io/master-

Исполнение завершено через некоторое время , а затем посмотреть ,
Режим управления стручка кластера K8S использование Statefulset (7)
чтобы начать

[Запрещение мастер развертывания стручка:]
kubectl порча узлы K8S node-role.kubernetes.io/master=true:NoSchedule

Ну, посмотрите, давайте на эффект не кластерная модель
Режим управления стручка кластера K8S использование Statefulset (7)

Описание было успешным


Но мы три гк, вниз общего разрешения, а два других могут начать работу ,
то мы смотрим вниз имитацию
аналоговых K8S-node1 отказа узла
Режим управления стручка кластера K8S использование Statefulset (7)
посмотрим на результаты:
Режим управления стручка кластера K8S использование Statefulset (7)
Режим управления стручка кластера K8S использование Statefulset (7)
Описание отказа машины, а затем
искать после того , как машина начала она
Режим управления стручка кластера K8S использование Statefulset (7)
Режим управления стручка кластера K8S использование Statefulset (7)
пила Теперь, после восстановления узла будет автоматически добавляться в исходный кластер ,
почему это так
Режим управления стручка кластера K8S использование Statefulset (7)
потому , что только идентифицирующей характеристикой стабильной сети StatefulSet, мы можем легко достичь Pod фиксированной потребности IP, но если развертывание на комплексе других интересных мест , мы случайно дать вам тянуть вверх, но это не будет
есть и другие точки знания:
Режим управления стручка кластера K8S использование Statefulset (7)
Режим управления стручка кластера K8S использование Statefulset (7)
PodDisruptionBudget POD контроллер кластера может установить приложение работает низкий номер, вы также можете установить минимальный процент приложений кластера POD работает, так мы можем гарантировать разрушение активного приложения , когда POD не уничтожит слишком много единовременное применение POD а, для того , чтобы обеспечить бесперебойную работу службы или SLA не понижает
мы будем оставаться здесь внешние услугами
для конфигурирования PodDisruptionBudget по два параметрам:
1, MinAvailable параметры: представляет собой минимальное количество доступных СОД, представляет собой Минимальный процент от общего количества одного и того же минимального числа POD POD POD путем управления кластером, или число рабочих состояний POD.

2, MaxUnavailable параметр: указует максимальное количество неиспользуемого ПО, приложение СТРУЧКА обозначает состояние , в котором кластерный не является максимальным количеством POD, или же процент от максимального общего количества POD POD недоступного состояния.
! ! ! ! ! Следует отметить , что, MinAvailable параметры и MaxUnavailable параметров являются взаимоисключающими, а это означает , что если вы используете один из этих параметров, вы не можете использовать другой параметр
это будет упоминаться конкретно в спине, только упомянуть использование.

Говоря об этой презентации сегодня, есть проблемы позади приветствия к моему частному письму, чтобы обсудить

рекомендация

отblog.51cto.com/xiaorenwutest/2482932
рекомендация