При развертывании образа Docker в Google Cloud с использованием файла YAML для развертывания в Kubernetes не было создано ни одного модуля. - PullRequest
0 голосов
/ 19 апреля 2020

У меня возникла проблема при попытке создать развертывание в Google Cloud с использованием файла YAML Kubernetes. Я вижу, что при использовании файла YAML стручки не создаются; однако, если я использую kubectl create deployment..., модули создаются.

Мой файл YAML выглядит следующим образом:

#Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
  generation: 1
  labels:
    app: hello-world
  name: hello-world
  namespace: default
  resourceVersion: "3691124"
spec:
  progressDeadlineSeconds: 600
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: hello-world
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - image: myrepo/hello-world:0.0.4.RELEASE
        imagePullPolicy: IfNotPresent
        name: hello-world
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
#Service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: hello-world
  name: hello-world
  namespace: default
  resourceVersion: "3691877"
spec:
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 32448
    port: 8080
    protocol: TCP
    targetPort: 8001
  selector:
    app: hello-world
  sessionAffinity: None
  type: LoadBalancer

Это то, что я вижу, когда запускаю kubectl get all:

NAME                           TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)          AGE
service/hello-world            LoadBalancer   Some IP        Some IP 3     8001:32449/TCP    15m
service/kubernetes             ClusterIP      Some IP 2      <none>         444/TCP           12d

Как видите, единственным запущенным ресурсом была служба. Я не вижу ни развертывания, ни создания каких-либо модулей.

Примечание Я заменил фактические IP-адреса на "Some IP" выше по понятным причинам.

Вопрос: Почему при использовании YAML не создаются модули, а создаются при использовании kubectl create deployment вместо файла конфигурации YAML?

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020
  1. Вы должны использовать --- в YAML, когда у вас есть несколько ресурсов в одном файле.
  2. Вы должны установить apiVersion: apps/v1 в развертывании.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
  generation: 1
  labels:
    app: hello-world
  name: hello-world
  namespace: default
  resourceVersion: "3691124"
spec:
  progressDeadlineSeconds: 600
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: hello-world
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - image: myrepo/hello-world:0.0.4.RELEASE
        imagePullPolicy: IfNotPresent
        name: hello-world
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: hello-world
  name: hello-world
  namespace: default
  resourceVersion: "3691877"
spec:
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 32448
    port: 8080
    protocol: TCP
    targetPort: 8001
  selector:
    app: hello-world
  sessionAffinity: None
  type: LoadBalancer

Выход

$ kubectl get deply,po,svc
NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/hello-world   0/3     3            0           5m34s

NAME                               READY   STATUS             RESTARTS   AGE

pod/hello-world-6bd8d58486-7lzh9   0/1     ImagePullBackOff   0          3m49s
pod/hello-world-6bd8d58486-m56rq   0/1     ImagePullBackOff   0          3m49s
pod/hello-world-6bd8d58486-z9xmz   0/1     ImagePullBackOff   0          3m49s

NAME                  TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/hello-world   LoadBalancer   10.108.65.81     <pending>     8080:32448/TCP    3m49s
service/kubernetes    ClusterIP      10.96.0.1        <none>        443/TCP           9d
0 голосов
/ 19 апреля 2020

Лучше всего создавать разные файлы yaml для разных ресурсов. используйте Helm, если вам нужно упаковать несколько ресурсов kubernetes в одну сущность.

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