Невозможно подключиться к контейнеру sql server локально с помощью миникуба

#sql-server #kubernetes #minikube

Вопрос:

я пытаюсь локально протестировать некоторые микросервисы .NET Core с помощью Minikube. У меня есть 2 микросервиса, которые взаимодействуют друг с другом и с контейнером mssql с помощью ClusterIP. Все работает нормально, но я не могу напрямую подключиться к mssql из среды SQL Management Studio.

Здесь развертывание mssql:

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
      - name: mssql
        image: mcr.microsoft.com/mssql/server:2017-latest
        ports:
        - containerPort: 1433
        env:
        - name: MSSQL_PID
          value: "Express"
        - name: ACCEPT_EULA
          value: "Y"
        - name: SA_PASSWORD
          valueFrom: 
            secretKeyRef:
              name: mssql
              key: SA_PASSWORD
        volumeMounts:
          - mountPath: /var/opt/mssql/data
            name: mssqldb
      volumes:
        - name: mssqldb
          persistentVolumeClaim:
            claimName: mssql-claim
---
apiVersion: v1
kind: Service
metadata: 
  name: mssql-clusterip-service
spec:
  type: ClusterIP
  selector:
    app: mssql
  ports: 
    - name: mssql
      protocol: TCP
      port: 1433
      targetPort: 1433
---
apiVersion: v1
kind: Service
metadata: 
  name: mssql-loadbalancer
spec:
  type: LoadBalancer
  selector:
    app: mssql
  ports: 
   -  protocol: TCP
      port: 1433
      targetPort: 1433
 

Я пробовал также использовать NodePort, но не могу получить к нему доступ с помощью «localhost, 1433».
Есть какие-нибудь идеи о том, как я могу получить доступ к нему извне?

Спасибо

Ответ №1:

Существует другой способ доступа к вашему приложению из внешнего мира. Если вы используете службу LoadBalancer типов, вы можете выполнить следующие действия для доступа к вашему приложению извне(только для мини-куба).:

  1. Выполните приведенную ниже команду в другом терминале:
 minikube tunnel
 
  1. Получите услуги
 kubectl get svc
 

Результат выглядит следующим образом:

 $ kubectl get svc
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
kubernetes           ClusterIP      10.96.0.1       <none>          443/TCP          20m
mssql-loadbalancer   LoadBalancer   10.102.149.78   10.102.149.78   1433:30373/TCP   16s
 
  1. откройте в своем браузере (убедитесь, что прокси-сервер не установлен)
 http://REPLACE_WITH_EXTERNAL_IP:1443
 

Вы также можете использовать механизм переадресации портов для доступа к вашему приложению, например:

 kubectl port-forward service/<your service> 1443:1443
 

Ссылка: https://minikube.sigs.k8s.io/docs/handbook/accessing/

Комментарии:

1. Привет @user1477747 Помог ли вам этот ответ?