Что такое внешний адрес IP-адреса службы Kubernetes? - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь сделать простые Бухты и Сервисы Kubernetes, используя панель мониторинга minikube. Сначала я создаю сервис Kubernetes mysql со следующим yaml.

apiVersion: v1
kind: Pod
metadata:
  name: blog-db
  labels:
    app: blog-mysql
spec:
  containers:
  - name: blog-mysql
    image: mysql:latest
    env:
      - name: MYSQL_ROOT_PASSWORD
        value: password
      - name: MYSQL_PASSWORD
        value: password
      - name: MYSQL_DATABASE
        value: test
    ports:
      - containerPort: 3306

---
apiVersion: v1
kind: Service
metadata:
  name: blog-db-svc
spec:
  selector:
    app: blog-mysql
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
    targetPort: 3306
  externalIPs:
  - 10.96.10.10

Сервис mysql создан успешно. Но образ моего внешнего приложения docker создается с помощью Spring Boot, поэтому мне нужно назначить правильный mysql URL-адрес подключения в файле application.properties, как показано ниже,

# ==============================================================
# = MySQL DataSource properties
# ==============================================================
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://10.96.10.10:3306/test?characterEncoding=utf8&serverTimezone=Asia/Seoul
spring.datasource.username = root
spring.datasource.password = password

Я ввожу IP-адрес , 10.96.10.10 внешнего ip ресурса службы в файл весенней загрузки application.properties. Но связь не удалась. Я проверил свойства сервиса mysql с помощью команды kubectl cli,

> kubectl get svc
NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
blog-db-svc   ClusterIP   10.104.29.31   10.96.10.10   3306/TCP   30m
kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP    2d

И вставляю все ip-адреса в application.properties моего docker контейнера. Но каждое усилие mysql соединение не удается. Как можно установить правильный внешний ip для ресурса службы kubernetes для соединения mysql?

1 Ответ

2 голосов
/ 08 марта 2020

Если и приложение mysql, и приложение весенней загрузки работают внутри кластера kubernetes, то вы не используете внешний IP-адрес для подключения к mysql из приложения весенней загрузки. Внешний IP-адрес предназначен для доступа к чему-либо, работающему внутри kubernetes, из снаружи Кубернетес . Вы можете использовать servicename:port, то есть blog-db-svc:3306, чтобы ссылаться на mysql из приложения весенней загрузки, если они оба работают в одном пространстве имен. Если mysql и приложение весенней загрузки находятся в разных пространствах имен, вы можете создать локальную службу в пространстве имен приложения весенней загрузки, чтобы ссылаться на mysql службу, расположенную в другом пространстве имен.

kind: Service
apiVersion: v1
metadata:
  name: service-y
  namespace: namespace-a
spec:
  type: ExternalName
  externalName: service-x.namespace-b.svc.cluster.local
  ports:
  - port: 3306

Вот руководство о том, как использовать mysql с пружинным чехлом в мини-кубе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...