Как обеспечить внедрение Deployment / Pod в кластер текущего проекта в GCP? - PullRequest
0 голосов
/ 16 марта 2020

В GCP я создал 2 проекта, как показано ниже:

  • Проект A С кластером A-Cluster, состоящим из 2 узлов: Node-A-1, Node-A- 2

  • Проект B С кластером B-Cluster, состоящим из 2 узлов: Узел-B-1, Узел-B-2

После выбрал проект B в Google Cloud Conosle и выполнил следующую команду в облачной оболочке:

kubectl create -f projectB.yaml

Вот файл projectB.yaml:

---
kind: Service
apiVersion: v1
metadata:
  name: projectb
spec:
  selector: 
      app: projectb
  ports:
     - protocol: "TCP"
       port:  80
       targetPort:  8080
  type: LoadBalancer
  loadBalancerIP: "35.238.24.168"

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: projectb
spec:
  replicas: 1
  selector: 
    matchLabels:
        app: projectb
  template:
    metadata:
      labels:
        app: projectb
    spec:
      containers:
      - name: projectb
        image: gcr.io/projectb/mp:latest
        ports:
        - containerPort: 80

Тогда я всегда получал эту же ошибку :

NAME                                             READY   STATUS             RESTARTS   AGE
projectb-7d5c647876-v7cwx                        0/1     ImagePullBackOff   0          18m

И я обнаружил, что rootcause состоит в том, что вышеприведенный модуль для проекта B вместо любого узла B-кластера фактически назначается узлу A-1 A-кластера! Итак, почему вышеупомянутый модуль не был назначен узлу в B-кластере для проекта B? Это связано с пространством имен? (оба проекта находятся в одном пространстве имен по умолчанию)

1 Ответ

0 голосов
/ 17 марта 2020

Как я понимаю, вы работаете с несколькими кластерами Kubernetes и хотели бы развернуть свой проект из командной строки.

Если это действительно так, вы должны установить context при работе в мультикластерной среде. , Вот документы, касающиеся Настройка доступа к нескольким кластерам .

После правильной настройки вы сможете использовать:

kubectl config get-contexts                          # display list of contexts 
kubectl config current-context                       # display the current-context
kubectl config use-context my-cluster-name           # set the default context to my-cluster-name

В Google вы можете подключиться напрямую к ваш кластер, используя

gcloud container clusters get-credentials <cluster-name> --zone <zone-name> --project <project-name>

, который извлечет конечную точку кластера и данные аутентификации и сгенерирует запись kubeconfig для <cluster-name>. Таким образом, вы будете работать только с этим кластером, и если вы хотите изменить кластер, над которым вы работаете, вам нужно будет снова использовать команду, изменив <cluster-name> на тот, с которым вы хотите работать.

Если вам интересно, вы можете прочитать больше о gcloud container command.

...