Я хочу создать несколько контейнеров, а затем создавать разные контейнеры и помещать контейнеры в блоки. - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь создать кластер kubernetes в оболочке Google.

gcloud container clusters create hello-server 
gcloud container clusters get-credentials hello-server

kubectl create deployment hello-server \
--image=gcr.io/google-samples/hello-app:1.0

kubectl expose deployment hello-server \
--type LoadBalancer \
--port 80 \
--target-port 8080

kubectl get  nodes

показывает 3 узла

NAME                                          STATUS   ROLES    AGE   VERSION
gke-hello-server-default-pool-03b44665-5grf   Ready    <none>   48m   v1.13.7-gke.24
gke-hello-server-default-pool-03b44665-65j5   Ready    <none>   48m   v1.13.7-gke.24
gke-hello-server-default-pool-03b44665-ng8w   Ready    <none>   48m   v1.13.7-gke.24


$kubectl get pods

NAME                            READY   STATUS    RESTARTS   AGE
hello-server-64db4d4dc7-llr5t   1/1     Running   0          29m

показывает один модуль

Теперь я хочу создатьнесколько контейнеров и поместите в них несколько контейнеров, а также сделайте какие-то взаимодействия в этих пакетах.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Пожалуйста, используйте Развертывание вместо Стручок

Примечание. Стручки не предназначены для использования в качестве объектов длительного пользования. Они не выдержат сбоев планирования, сбоев узлов или других выселений, например, из-за нехватки ресурсов или в случае обслуживания узла.

В общем, пользователям не нужно создавать модули напрямую. Они почти всегда должны использовать контроллеры даже для одиночных игр, например, Deployments. Контроллеры обеспечивают самовосстановление в области кластера, а также управление репликацией и развертыванием. Контроллеры, такие как StatefulSet, также могут обеспечивать поддержку модулей с сохранением состояния.

Внутри вашего модуля уже есть контейнер. Вы можете проверить это, запустив kubectl get pod your_pod_name, or kubectl describe pod your_pod_name

Чтобы получить больше информации о том, как создать свой собственный образ, обратитесь к Рекомендации по написанию Dockerfile . В качестве второго шага обратитесь к Документация Kubernetes , чтобы получить больше информации о том, как взаимодействовать с вашими приложениями внутри кластера и как создавать сервисы и предоставлять их внутри или вне кластера.

Здесь выможно найти пример использования этого образа с развертыванием.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello
      tier: web
  template:
    metadata:
      labels:
        app: hello
        tier: web
    spec:
      containers:
      - name: hello-app
        image: gcr.io/google-samples/hello-app:1.0
        ports:
        - containerPort: 8080
0 голосов
/ 04 октября 2019

Вы создали один модуль (hello-server-64db4d4dc7-llr5t) в результате создания развертывания (hello-server). kubectl create deployment по умолчанию - одна реплика (Pod).

Вы можете увеличить количество реплик (Pod), используя:

kubectl scale deployment/hello-server --replicas=3

NB Остерегайтесь увеличениявзимает плату за счет увеличения количества реплик.

Созданное вами развертывание создает блоки, содержащие один контейнер с использованием образа gcr.io/google-samples/hello-app.

Вы лучше ориентируетесь в развертывании и обслуживании, чем вПод уровнем при использовании Kubernetes. Kubernetes вводит уникальные концепции, и это стоит попробовать на ранней стадии.

Я рекомендую прочитать справочные материалы Kubernetes и проверить игровую площадку. Я пристрастен, потому что знаю Дейва, но, хотя эта книга старая, Дейв очень хорошо объясняет Кубернетес из первых принципов:

https://www.oreilly.com/library/view/kubernetes/9781492048718/

https://www.katacoda.com/courses/kubernetes/playground

...