Как создать файл развертывания k8s, который будет развертываться на основе архитектуры - PullRequest
0 голосов
/ 18 мая 2018

Я написал файл развертывания следующим образом, что выдает ошибку как unknown field "platform".Любая идея о том, что указать для развертывания на основе архитектуры?

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.7.9
        ports:
        - containerPort: 80
        platform:
          architecture: amd64
          os: linux
      - name: nginx
        image: ppc64le/nginx:1.7.9
        ports:
        - containerPort: 80
        platform:
          architecture: ppc64le
          os: linux

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы должны использовать определения nodeAffinity в своей спецификации развертывания.Вот пример, который я использую для закрепления задач на amd64 или для постановки на охрану хостов:

  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: beta.kubernetes.io/arch
            operator: In
            values:
            - amd64

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

0 голосов
/ 18 мая 2018

Если вы посмотрите на спецификацию контейнера - для platform не определено поле - поэтому ваша ошибка связана с ошибкой в ​​развертывании YAML.Вам придется удалить следующий блок из YAML, чтобы он заработал (при условии, что в манифесте нет других проблем):

platform:
          architecture: ppc64le
          os: linux

Во-вторых, AFAIK то, что вы пытаетесь сделать, невозможно.Существует два подхода, которые я могу предложить в качестве альтернативы:

  1. Если вы используете helm, вы можете параметризовать версию образа Nginx и затем динамически передавать ее, основываясь на ваших знаниях архитектуры целевой ОС..

    • name: nginx image: nginx: {{version}} ports: - containerPort: 80
  2. Второй подход заключается в использовании taints.и допуски или сходство узлов для планирования модулей на узле с соответствующей ОС.Это также означает, что вам, возможно, придется выполнить несколько развертываний - по одному для каждой архитектуры.

Подробная информация о портах и ​​ документация допусков можно найти здесь Подробная информация об узле & сродство к стручку можно найти здесь

...