Набор состояний не работает в локальном мини-кубе. Это выдает ошибку с сервера (BadRequest): pod mysql-0 не имеет назначенного хоста

#docker #kubernetes #persistent-volumes #kubernetes-statefulset #persistent-volume-claims

Вопрос:

 apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  namespace: cp1
spec:
  selector:
    matchLabels:
      app: mysql
  serviceName: mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mysql
          image: mysql:latest
          env:
            - name: MYSQL_ROOT_HOST
              value: '%'
            - name: MYSQL_LOG_CONSOLE
              value: "true"
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                configMapKeyRef:
                  key: MYSQL_PASSWORD
                  name: env-map-service
          ports:
            - containerPort: 3306
              name: mysql
          resources:
            requests:
              cpu: 500m
              memory: 1Gi
          volumeMounts:
            - name: mysql-vol
              mountPath: /var/lib/mysql
  volumeClaimTemplates:
    - metadata:
        name: mysql-vol
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 1Gi
        storageClassName: test-sc
 

 apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: cp1
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
    - port: 3306
      name: mysql
      targetPort: 3306
  clusterIP: None
  selector:
    app: mysql
 

Это файл yaml для развертывания моего приложения. которые отлично работают,

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: kube-child-app
  labels:
    app: kube-child-app
  namespace: cp1
spec:
  replicas: 1
  template:
    metadata:
      name: kube-child-app
      labels:
        app: kube-child-app
    spec:
      containers:
        - name: kube-child-app
          image: jahadulrakib/kube-child-app:latest
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8081
      restartPolicy: Always
  selector:
    matchLabels:
      app: kube-child-app
 

Я хочу развернуть приложение базы данных в своем локальном кластере kubernetes. Но он выдает следующую ошибку и не запускает модуль. здесь я прикрепляю свой файл yaml для pod up. я создаю для этого класса StroageClass, PV.

Ошибка: Ошибка с сервера (плохой запрос): pod mysql-0 не назначил хост

ОБНОВЛЕНИЕ 1:

Предупреждение Не удалось запланировать 5 часов 40 минут по умолчанию-планировщик доступен 0/1 узлов: 1 модуль имеет несвязанные немедленные требования PersistentVolumeClaims

пвх и фотоэлектрические материалы находятся в состоянии ожидания

ОБНОВЛЕНИЕ 2:

ПВХ в pending статусе, потому что класс хранения не может создать необходимый PV

15m Предупреждение о сбое при планировании pod/mysql-0 доступны узлы 0/1: 1 pod имеет несвязанные немедленные требования к постоянному объему. 4m12s Обычное внешнее разрешение persistentvolumeclaim/mysql-vol-mysql-0 ожидает создания тома либо внешним поставщиком «docker.io/hostpath» или создан вручную системным администратором

ОБНОВЛЕНИЕ 3:

проблема, по-видимому, связана с различием между доступными метками PV и конфигурацией, которую мы хотим использовать, и теми, которые заданы в наборе состояний volumeClaimTemplates

Комментарии:

1. у вас есть какое-то другое приложение или модуль, запущенный в cp1 пространстве имен? если нет, это может быть проблемой конфигурации селектора узлов

2. нет, другое развертывание и модуль хорошо работают с использованием пространства имен cp1

3. это единственное доступное событие или журнал? есть ли у вас еще какие-то конфигурации выбора узлов в тех, которые работают? можете ли вы добавить рабочий пример, например, развертывание? Какова ваша кластерная архитектура (рабочие,главные, инфра-узлы)?

4. apiVersion: приложения/v1 вид: Метаданные развертывания: имя: метки приложений-дочерних приложений: приложение: пространство имен приложений-дочерних приложений: cp1 спецификация: реплики: 1 шаблон: метаданные: имя: метки приложений-дочерних приложений: приложение: спецификация приложений-дочерних приложений: контейнеры:-имя: изображение приложения-дочернего приложения: jahadulrakib/kube-дочернее приложение:последняя версия imagePullPolicy: Если нет портов:-Порт контейнера: 8081 Политика обновления: Всегда выбор: Метки соответствия: приложение: kube — детское приложение

5. добавлен мой рабочий файл развертывания, о котором идет речь.

Ответ №1:

Похоже, ПВХ не был удовлетворен необходимым PV, потому что класс хранения не создал новый PV, а существующий PV не соответствовал Pending ПВХ, поэтому они не могли быть связаны вместе. после изменения соответствующих полей они связываются вместе.

Хотя он использует только одну реплику, набор состояний по-прежнему является лучшим вариантом по сравнению с использованием развертывания с пвх, в основном из-за того, что целью приложения является масштабирование БД с высоты птичьего полета проекта.Объясните, что приложение имеет смысл лучше при использовании набора состояний, так как оно отслеживает состояние и в будущем может превратиться в набор модулей вместо одного.

ознакомьтесь со статьей kubernetes о нем, когда он был впервые популяризирован и приведен в полезное состояние, а также с их текущими документами по нему