Как установить динамический IP для файла свойств? - PullRequest
0 голосов
/ 11 июня 2019

Я развернул 2 модуля, которые нужно было поговорить с другим модулем (скажем, Модуль A). Для модуля A требуется IP-адрес служб развернутых модулей. Поэтому мне нужно установить эти IP-адреса в файле свойств конфигурации, необходимом для модуля A. Поскольку IP-адрес является динамическим, т. Е. При сбое модуля он изменяется. Поэтому необходимо установить его динамически.

В настоящее время я развернул 2 модуля и сделал

kubectl get ep

и установите эти IP-адреса в файле свойств конфигурации и создайте Dockerfile, отправьте его и используйте этот образ для развертывания.

Это мой файл deplyment и svc, в котором изображение djtijare / a2ipricing ссылается на файл конфигурации

    apiVersion: v1
   kind: Service
metadata:
  name: spring-boot-demo-pricing
spec:
  ports:
  - name: spring-boot-pricing
    port: 8084
    targetPort: 8084
  selector:
    app: spring-boot-demo-pricing

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: spring-boot-demo-pricing
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: spring-boot-demo-pricing
    spec:
      containers:
      - name: spring-boot-demo-pricing
        image: djtijare/a2ipricing:v1
        imagePullPolicy: IfNotPresent
       # envFrom:
        #- configMapRef:
        #    name: spring-boot-demo-config-map
        resources:
          requests:
            cpu: 100m
            memory: 1Gi
        ports:
        - containerPort: 8084
      nodeSelector:
         disktype: ssd

Итак, как динамически установить IP-адреса этих 2-х модулей в конфигурационном файле, создать и отправить образ докера.

1 Ответ

0 голосов
/ 12 июня 2019

Я думаю, вам следует подумать об использовании Безголовых сервисов .

Иногда вам не требуется или не требуется балансировка нагрузки и один IP-адрес службы.В этом случае вы можете создать так называемые «безголовые» сервисы, явно указав "None" для IP-адреса кластера (.spec.clusterIP).

Вы можете использовать безголовый сервис для взаимодействия с другими механизмами обнаружения сервисов., не будучи привязанным к реализации Kubernetes.Например, вы могли бы реализовать пользовательский [Оператор] (должен быть построен на этом API.

Для таких Services, IP-адрес кластера не выделен, kube-proxy не обрабатывает эти службы, и нетРаспределение нагрузки или проксирование выполняется платформой для них. То, как DNS автоматически настраивается, зависит от того, определены ли в службе селекторы.

Для вашего примера, если вы установите службу на spec.clusterIP = None, вы можете nslookup -type=A spring-boot-demo-pricingкоторый покажет вам IP-адреса pods, прикрепленные к этому service.

/ # nslookup -type=A spring-boot-demo-pricing
Server:         10.11.240.10
Address:        10.11.240.10:53

Name:   spring-boot-demo-pricing.default.svc.cluster.local
Address: 10.8.2.20
Name:   spring-boot-demo-pricing.default.svc.cluster.local
Address: 10.8.1.12
Name:   spring-boot-demo-pricing.default.svc.cluster.local
Address: 10.8.1.13

А вот yaml, которые я использовал:

apiVersion: v1
kind: Service
metadata:
  name: spring-boot-demo-pricing
  labels:
    app: spring-boot-demo-pricing
spec:
  ports:
  - name: spring-boot-pricing
    port: 8084
    targetPort: 8084
  clusterIP: None
  selector:
    app: spring-boot-demo-pricing

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-boot-demo-pricing
  labels:
    app: spring-boot-demo-pricing
spec:
  replicas: 3
  selector:
    matchLabels:
       app: spring-boot-demo-pricing
  template:
    metadata:
      labels:
        app: spring-boot-demo-pricing
    spec:
      containers:
      - name: spring-boot-demo-pricing
        image: djtijare/a2ipricing:v1
        imagePullPolicy: IfNotPresent
       # envFrom:
        #- configMapRef:
        #    name: spring-boot-demo-config-map
        resources:
          requests:
            cpu: 100m
            memory: 1Gi
        ports:
        - containerPort: 8084
...