В последний раз , когда мы говорим о развертывании управлять количество копия стручок контейнер, контейнер начинает снова после того, как повесить трубку , если вы можете, но если начало в том , что если MySQL Cluster, Zookeeper кластера, etcd этого кластера, который имеет номер документа, этот связаны, если потом повесить трубку один раз, после его запуска, будет ли кластер идентификатор изменить? Ответ да капризная.
То , что нет никакого другого вида модели контроллера? Конечно K8S дать мне предложить. [Statefulset]
, что сцена требует StatefulSet это? Официальная рекомендация дается в том , что при развертывании приложения для удовлетворения потребностей одного или нескольких из развертывания рекомендуется использовать StatefulSet
Стабильная, уникальная сетевая идентификация.
Стабильные, долговечные памяти.
Дежурный, элегантный и масштабируемое развертывание.
Дежурное, элегантное и удаление стоп.
Дежурное, автоматическое опрокидывание.
Далее, посмотрите на разницу между statefulset и развертывания:
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: Перезарядка
следующий стартовый бит, здесь найден р и не пвх никакой обязательной статуса доступен
4, развертывание кластера Zookeeper
кошка zookeeper.yaml
apiVersion: v1
вид: Сервис
метаданные:
Имя: ZK-HS
метка:
приложение: ZK
спецификация:
порты:
- Порт: 2888
Имя: сервер -
Порт: 3888
Имя: лидер выборы
clusterIP: Нет
Селектор:
приложение: гкapiVersion: v1
вид: Сервис
метаданные:
Имя: гк-CS
метка:
приложение: ZK
спецификация:
порты: -
Порт: 2181
Имя: клиент
селектор:
приложение: гкapiVersion: политика / v1beta1
вид: PodDisruptionBudget
метаданные:
имя: гк-PDB
спецификация:
селектор:
matchLabels:
приложение: гк
maxUnavailable: 1apiVersion: приложения / 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:
команда:
- Название: kubernetes-Zookeeper
- гк
- ключ: «приложение»
- ш
- -с
- "Zookeeper готовых 2181"
initialDelaySeconds: 10
timeoutSeconds: 5
livenessProbe:
Exec:
команда: - ш
- -с
- "Zookeeper готовых 2181"
initialDelaySeconds: 10
timeoutSeconds: 5
volumeMounts:- имя: DATADIR
mountPath: / вар / Библиотека / Zookeeper
SecurityContext:
RunAsUser: 1000
fsGroup: 1000
volumeClaimTemplates:
- имя: DATADIR
- labelSelector:
- метаданные:
имя: каталогу_данные
аннотации:
volume.beta.kubernetes.io/storage-class: "ничего"
спецификация:
accessModes: [ "ReadWriteOnce"]
Ресурсы:
запросы:
хранение: 3Gi
После завершения начинают не создавать
не вверх смотреть на то , что причины
найдены нет пользователей Zookeeper
создать и дать ему привилегию
[Примечание] {гк для каждой установки машины должно быть выполнено}
найдено 2 был запущен, есть pening состояние, выше, не установлен в Генеральном
взгляд ДАВАЙТЕ в отчете журнала ошибок обнаружили , что
использование кластера инициализации kubeadm, для по соображениям безопасности Pod не будут запланированы на главном узле, который должен сказать Мастер узел не участвует в рабочей нагрузке
мы делаем здесь также работает мастер, ограничиваются три машин
позволяют стручок развертывания мастер - узел, используйте следующую команду:
kubectl порча узлы --all node-role.kubernetes.io/master-
Исполнение завершено через некоторое время , а затем посмотреть ,
чтобы начать
[Запрещение мастер развертывания стручка:]
kubectl порча узлы K8S node-role.kubernetes.io/master=true:NoSchedule
Ну, посмотрите, давайте на эффект не кластерная модель
Описание было успешным
Но мы три гк, вниз общего разрешения, а два других могут начать работу ,
то мы смотрим вниз имитацию
аналоговых K8S-node1 отказа узла
посмотрим на результаты:
Описание отказа машины, а затем
искать после того , как машина начала она
пила Теперь, после восстановления узла будет автоматически добавляться в исходный кластер ,
почему это так
потому , что только идентифицирующей характеристикой стабильной сети StatefulSet, мы можем легко достичь Pod фиксированной потребности IP, но если развертывание на комплексе других интересных мест , мы случайно дать вам тянуть вверх, но это не будет
есть и другие точки знания:
PodDisruptionBudget POD контроллер кластера может установить приложение работает низкий номер, вы также можете установить минимальный процент приложений кластера POD работает, так мы можем гарантировать разрушение активного приложения , когда POD не уничтожит слишком много единовременное применение POD а, для того , чтобы обеспечить бесперебойную работу службы или SLA не понижает
мы будем оставаться здесь внешние услугами
для конфигурирования PodDisruptionBudget по два параметрам:
1, MinAvailable параметры: представляет собой минимальное количество доступных СОД, представляет собой Минимальный процент от общего количества одного и того же минимального числа POD POD POD путем управления кластером, или число рабочих состояний POD.
2, MaxUnavailable параметр: указует максимальное количество неиспользуемого ПО, приложение СТРУЧКА обозначает состояние , в котором кластерный не является максимальным количеством POD, или же процент от максимального общего количества POD POD недоступного состояния.
! ! ! ! ! Следует отметить , что, MinAvailable параметры и MaxUnavailable параметров являются взаимоисключающими, а это означает , что если вы используете один из этих параметров, вы не можете использовать другой параметр
это будет упоминаться конкретно в спине, только упомянуть использование.
Говоря об этой презентации сегодня, есть проблемы позади приветствия к моему частному письму, чтобы обсудить