Мой сценарий: я создаю файл развертывания кластера rabbmitmq, в котором я устанавливаю набор реплик 3, потому что я создаю кластер из 3 узлов. цель состоит в том, чтобы создать модуль 1, а затем после создания второго и третьего модулей выполнить команду только для модулей 2 и 3. это команда "rabbitmqctl join_cluster command rabbit@pod1.svc" для соединения с модулем 1. Я не понимаю, как я могу этого добиться.
Я прикрепил свой yaml-файл с набором состояний. Пожалуйста, помогите мне, поскольку я новичок в Kubernetes.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq
spec:
serviceName: rabbitmq-internal
revisionHistoryLimit: 3
updateStrategy:
type: RollingUpdate
replicas: 3
selector:
matchLabels:
app: rabbitmq
template:
metadata:
name: rabbitmq
labels:
app: rabbitmq
spec:
imagePullSecrets:
- name: dockerhublogin
- name: rabbitmq
serviceAccountName: rabbitmq
terminationGracePeriodSeconds: 10
containers:
- name: rabbitmq
image: constellationdealer/ptlids:rabbitmq
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- >
until rabbitmqctl --erlang-cookie ${RABBITMQ_ERLANG_COOKIE} await_startup; do sleep 1; done;
rabbitmqctl --erlang-cookie ${RABBITMQ_ERLANG_COOKIE} set_policy ha-two "" '{"ha-mode":"exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
#rabbitmqctl stop_app && join_cluster rabbit@(HOSTNAME}.rabbitmq-internal.default.svc.cluster.local && rabbitmqctl start_app
ports:
- containerPort: 4369
- containerPort: 5672
- containerPort: 25672
- containerPort: 15672
resources:
requests:
memory: "300Mi"
cpu: "0.4"
limits:
memory: "500Mi"
cpu: "0.6"
livenessProbe:
exec:
command: ["rabbitmq-diagnostics", "status", "--erlang-cookie", "$(RABBITMQ_ERLANG_COOKIE)"]
initialDelaySeconds: 60
periodSeconds: 60
timeoutSeconds: 15
readinessProbe:
exec:
command: ["rabbitmq-diagnostics", "status", "--erlang-cookie", "$(RABBITMQ_ERLANG_COOKIE)"]
# command: ["rabbitmq-diagnostics", "check_port_connectivity", "--erlang-cookie", "$(RABBITMQ_ERLANG_COOKIE)"]
initialDelaySeconds: 20
periodSeconds: 60
timeoutSeconds: 10
envFrom:
- configMapRef:
name: rabbitmq-cfg
env:
- name: HOSTNAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: RABBITMQ_USE_LONGNAME
value: "true"
- name: RABBITMQ_NODENAME
value: "rabbit@$(HOSTNAME).rabbitmq-internal.$(NAMESPACE).svc.cluster.local"
- name: K8S_SERVICE_NAME
value: "rabbitmq-internal"
- name: RABBITMQ_DEFAULT_USER
value: admin
- name: RABBITMQ_DEFAULT_PASS
value: password
- name: RABBITMQ_ERLANG_COOKIE
value: secret_cookie
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name