Ответ 1
Ответ Pagids имеет большинство основ. Вы должны создать 4 Deployments
для своего сценария. Каждое развертывание создаст ReplicaSet
, который планирует и контролирует коллекцию PODs
для Deployment
.
Каждый Deployment
, скорее всего, также потребует Service
перед ним для доступа. Обычно я создаю один файл yaml, в котором есть Deployment
и соответствующий Service
. Вот пример для nginx.yaml
, который я использую:
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
name: nginx
targetPort: 80
nodePort: 32756
selector:
app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginxdeployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginxcontainer
image: nginx:latest
imagePullPolicy: Always
ports:
- containerPort: 80
Вот некоторая дополнительная информация для уточнения:
- A
POD
не является масштабируемой единицей. ADeployment
, который планирует PODs. - A
Deployment
предназначен для представления одной группы POD, выполняющей единую цель вместе. - У вас может быть много
Deployments
работать вместе в виртуальной сети кластера. - Для доступа к
Deployment
, который может состоять из множестваPODs
, запущенных на разных узлах, вам необходимо создать Сервис. - Развертывания предназначены для размещения служб без состояния. Если вам нужно сохранить состояние, вам нужно создать вместо него
StatefulSet
(например, для службы базы данных).