Kubectl получает развертывания, без ресурсов - PullRequest
0 голосов
/ 07 мая 2020

Я только начал изучать кубернеты, в каждом учебнике автор обычно использует «kubectl .... deploymenst» для управления вновь созданными развертываниями. Теперь с этими командами (например, kubectl get deploymets) я всегда получаю ответ No resources found in default namespace., и мне нужно использовать «pods» вместо «развертывания» , чтобы все работало ( который отлично работает).

Теперь мой вопрос: что вызывает это, и в чем разница между использованием развертывания и модуля? ? Я установил драйвер docker в первый миникуб, это как-то связано с этим?

Ответы [ 2 ]

5 голосов
/ 07 мая 2020

Сначала давайте разберем sh некоторые термины.

Pod - это базовый c строительный блок для Kubernetes. Он группирует один или несколько контейнеров (например, Docker контейнеров) с общим хранилищем / сетью и спецификацией того, как запускать контейнеры.

Развертывание - это контроллер, который обертывает Pod / s и управляет его жизненным циклом, то есть от фактического состояния до желаемого состояния. Существует еще один уровень между развертыванием и модулем: ReplicaSet : цель ReplicaSet - поддерживать стабильный набор реплик модулей, работающих в любой момент времени. Таким образом, он часто используется, чтобы гарантировать доступность определенного количества идентичных модулей. Ниже представлена ​​визуализация: enter image description here Источник: я нарисовал!


В вашем случае, что могло бы произойти:
  1. Либо вы создали модуль, а не развертывание. Следовательно, когда вы делаете kubectl get deployment, вы не видите никаких ресурсов. Обратите внимание, что когда вы создаете развертывания, он, в свою очередь, создает для вас ReplicaSet, а также создает определенные модули.
  2. Или может быть вы создали развертывание в другом пространстве имен, если это так, тогда введите эту команду, чтобы найти свои развертывания в этом пространстве имен kubectl get deploy NAME_OF_DEPLOYMENT -n NAME_OF_NAMESPACE


Дополнительная информация, чтобы прояснить ваши концепции:

Источник Ниже раздела внутри SP c .template - это раздел, который предположительно является вашим манифестом POD, если вы должны были создать его вручную, а не идти по маршруту развертывания. Теперь, как я сказал ранее простым языком, Deployments - это оболочка для ваших POD, поэтому все, что вы видите за пределами пути spe c .template, - это конфигурация, которую вам нужно будет определить в зависимости от того, как вы хотите управлять (масштабирование, привязка и т. д. c) POD


apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
1 голос
/ 07 мая 2020

Развертывание - это контроллер , обеспечивающий абстракцию более высокого уровня поверх модулей и ReplicaSets. Развертывание обеспечивает декларативные обновления для модулей Pod и ReplicaSet. Развертывания внутри создают ReplicaSets, в которых создаются поды.

Случаи использования развертывания задокументированы здесь

Одна из причин для No resources found in default namespace может заключаться в том, что вы создали развертывание в указывает пространство имен c, а не пространство имен по умолчанию.

Вы можете увидеть развертывания в определенном пространстве имен c или во всех пространствах имен через

kubectl get deploy -n namespacename
kubectl get deploy -A
...