стручок застрял в состоянии ожидания после применения kubectl? - PullRequest
0 голосов
/ 14 июня 2019

мой пакет остается в состоянии ожидания после применения kubectl. В настоящее время я пытаюсь развернуть 3 службы: базу данных postgres, сервер API и пользовательский интерфейс приложения. Модуль postgres работает нормально, но остальные 2 службы застряли в состоянии ожидания.

Я пытался создать файлы yaml, подобные этому

Персональный том API-сервера

kind: PersistentVolume
apiVersion: v1
metadata:
  name: api-initdb-pv-volume
  labels:
    type: local
    app: api
spec:
  storageClassName: manual
  capacity:
    storage: 1Mi
  accessModes:
    - ReadOnlyMany
  hostPath:
    path: "/home/vignesh/pagedesigneryamls/api"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: api-initdb-pv-claim-one
  labels:
    app: api
spec:
  storageClassName: manual
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 1Mi

API-сервер


apiVersion: v1
kind: Service
metadata:
  name: apiserver
  labels:
    app: apiserver
spec:

  ports:
  - name: apiport
    port: 8000
    targetPort: 8000

  selector:
    app: apiserver
    tier: backend    

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: apiserver
  labels:
    app: apiserver
spec:
  selector:
    matchLabels:
      app: apiserver
      tier: backend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: apiserver
        tier: backend
    spec:

      containers:
      - image: suji165475/devops-sample:wootz-backend
        name: apiserver
        ports:
        - containerPort: 8000
          name: myport
        volumeMounts:
        - name: api-persistent-storage-one
          mountPath: /usr/src/app
        - name: api-persistent-storage-two
          mountPath: /usr/src/app/node_modules  
      volumes:
      - name: api-persistent-storage-one
        persistentVolumeClaim:
          claimName: api-initdb-pv-claim-one
      - name: api-persistent-storage-two
        persistentVolumeClaim:
          claimName: api-initdb-pv-claim-two 

docker-compose file (только для справки)


version: "3"

services:
  pg_db:
    image: postgres
    networks: 
      - wootzinternal
    ports:
      - 5432
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=wootz
    volumes:
      - wootz-db:/var/lib/postgresql/data
  apiserver:
    image: wootz-backend
    volumes:
      - ./api:/usr/src/app
      - /usr/src/app/node_modules
    build:
      context: ./api
      dockerfile: Dockerfile
    networks: 
      - wootzinternal
    depends_on:
      - pg_db
    ports:
      -  '8000:8000'
  ui:
    image: wootz-frontend
    volumes:
      - ./client:/usr/src/app
      - /usr/src/app/node_modules
    build:
      context: ./client
      dockerfile: Dockerfile
    networks:
      - wootzinternal
    ports:
      - '80:3000'

volumes:
  wootz-db:

networks:
  wootzinternal:
    driver: bridge

когда я попытался применить kubectl к файлу yaml сервера api, модуль для сервера api застрял в состоянии ожидания навсегда. Как мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

api-initdb-pv-претензия-два ПВХ не существует.

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

0 голосов
/ 14 июня 2019

Для ваших будущих вопросов, если вам нужно получить больше информации о том, что происходит, вы должны использовать kubectl describe pod_name, поскольку это даст вам и нам больше информации и увеличит шансы на правильный ответ. Я использовал ваш yaml и после описания стручка:

persistentvolumeclaim "api-initdb-pv-claim-two" not found

После добавления второго:

pod has unbound PersistentVolumeClaims (repeated 3 times)

После добавления второго PV он должен начать работать.

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

Подробнее об этом можно прочитать здесь .

PersistentVolume (PV) - это атомная абстракция. Ты не можешь подразделить его на несколько требований.

Дополнительную информацию о постоянных томах и о том, как они работают, можно найти в официальной документации .

Также, если вы пытаетесь развернуть PostgresSQL, здесь - хорошее руководство о том, как это сделать. И еще один, который будет проще, поскольку он использует управляемый сервис Kubernetes - как запустить HA PostgreSQL на GKE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...