Kubernetes: Replicaset с пакетом из нескольких контейнеров, не обеспечивающим все контейнеры - PullRequest
0 голосов
/ 17 октября 2018

Прикрепленное изображение - это yaml-код моего набора реплик, который я пытаюсь предоставить, только контейнер sync-gcp инициализируется, когда я его выполняю.Я не уверен, в чем заключается ошибка, которую я делаю код yaml моего реплицированного набора

apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: sync-rs
spec:
 replicas: 4
 minReadySeconds: 20
 selector:
   matchExpressions:
     - {key: platform, operator: In, values: [aws, gcp]}
   matchLabels:
     version: "2"
template:
  metadata:
   name: sync-aws
   labels:
    version: "2"
    platform: aws
  spec:
   containers:
    - name: sync-aws
      image: schoolofdevops/sync:v2
   name: sync-gcp
   labels:
    version: "2"
    platform: gcp
   spec:
    containers:
     - name: sync-gcp
       image: schoolofdevops/sync:v2 

Ниже приведен вывод команды description для репликационного набора

root@kube-01:/vagrant/k8s-code-master/projects/instavote/dev# kubectl 
describe rs sync-rs
Name:         sync-rs
Namespace:    default
Selector:     platform in (aws,gcp),version=2
Labels:       platform=gcp
          version=2
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
            {"apiVersion":"apps/v1","kind":"ReplicaSet","metadata": 
{"annotations":{},"name":"sync-rs","namespace":"default"},"spec": 
{"minReadySeconds"...
Replicas:     4 current / 4 desired
Pods Status:  4 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
     Labels:  platform=gcp
       version=2
Containers:
   sync-gcp:
   Image:        schoolofdevops/sync:v2
   Port:         <none>
   Host Port:    <none>
   Environment:  <none>
   Mounts:       <none>
   Volumes:        <none>
Events:
   Type    Reason            Age   From                   Message
   ----    ------            ----  ----                   -------
   Normal  SuccessfulCreate  36m   replicaset-controller  Created pod: sync-rs-hv25f
   Normal  SuccessfulCreate  36m   replicaset-controller  Created pod: sync-rs-2689s
   Normal  SuccessfulCreate  36m   replicaset-controller  Created pod: sync-rs-s54vz
   Normal  SuccessfulCreate  36m   replicaset-controller  Created pod: sync-rs-jjxm8
   root@kube-01:/vagrant/k8s-code-master/projects/instavote/dev#

1 Ответ

0 голосов
/ 18 октября 2018

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

apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: sync-rs
spec:
 replicas: 4
 minReadySeconds: 20
 selector:
   matchExpressions:
     - {key: platform, operator: In, values: [aws, gcp]}
   matchLabels:
     version: "2"
template:
  metadata:
   name: sync-stuff
   lables:
     version: "2"
  spec:
    containers:
    - name: sync-aws
      image: schoolofdevops/sync:v2
    - name: sync-gcp
      image: schoolofdevops/sync:v2 

Но этовсе равно не будет работать, потому что вам нужны отдельные метки для aws и gcp, поэтому пора делить вещи на отдельные модули вместо контейнеров.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: sync-rs-aws
spec:
 replicas: 2
 minReadySeconds: 20
 selector:
   matchExpressions:
     - {key: platform, operator: In, values: [aws]}
   matchLabels:
     version: "2"
template:
  metadata:
   name: sync-aws
   lables:
     version: "2"
     platform: "aws"
  spec:
   containers:
    - name: sync-aws
      image: schoolofdevops/sync:v2

---

apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: sync-rs-gcp
spec:
 replicas: 2
 minReadySeconds: 20
 selector:
   matchExpressions:
     - {key: platform, operator: In, values: [ gcp ]}
   matchLabels:
     version: "2"
template:
  metadata:
   name: sync-gcp
   lables:
     version: "2"
     platform: "gcp"
  spec:
   containers:
    - name: sync-gcp
      image: schoolofdevops/sync:v2
...