You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minikube部署SQL Server 2022后,无法通过SSMS从主机连接

无法连接Minikube中部署的SQL Server 2022实例排查

在本地主机运行Minikube,通过YAML部署SQL Server 2022容器后,无法从主机通过SSMS连接到该实例,以下是相关配置信息及排查细节:


部署YAML配置

apiVersion: v1
kind: Secret
metadata:
  name: mssql-secret
  namespace: new-kubernetes
type: Opaque
stringData:
  MSSQL_SA_PASSWORD: Qwerty123!
---
apiVersion: v1
kind: Service
metadata:
  name: mssql-service
  namespace: new-kubernetes
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 30001
      targetPort: 1433
  type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mssql-pv
  namespace: new-kubernetes
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data/mssql"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mssql-pvc
  namespace: new-kubernetes
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-deployment
  namespace: new-kubernetes
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
      - name: mssql
        image: mcr.microsoft.com/mssql/server:2022-latest  # MSSQL Server 2022
        ports:
        - containerPort: 1433
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: MSSQL_SA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mssql-secret
              key: MSSQL_SA_PASSWORD
        volumeMounts:
        - name: mssql-data
          mountPath: /var/opt/mssql
      volumes:
      - name: mssql-data
        persistentVolumeClaim:
          claimName: mssql-pvc

集群资源状态

执行kubectl get all -n new-kubernetes输出:

NAME                                     READY   STATUS    RESTARTS   AGE
pod/mssql-deployment-5d8d4b4bc7-v7szb    1/1     Running   0          28s

NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
service/mssql-service       LoadBalancer   10.108.132.45   127.0.0.1     30001:31453/TCP   28s

NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mssql-deployment    1/1     1            1           28s

NAME                                           DESIRED   CURRENT   READY   AGE
replicaset.apps/mssql-deployment-5d8d4b4bc7    1         1         1       28s

Minikube Tunnel运行状态

W0903 20:18:09.098870   73348 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\XXXXXXX\.docker\contexts\meta\XXXXXXX\meta.json: The system cannot find the path specified.
* Tunnel successfully started

* NOTE: Please do not close this terminal as this process must stay alive for the tunnel to be accessible ...

* Starting tunnel for service mssql-service.

Pod事件详情

执行kubectl describe pod mssql-deployment-5d8d4b4bc7-v7szb -n new-kubernetes的事件部分:

....
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  4m8s  default-scheduler  Successfully assigned new-kubernetes/mssql-deployment-5d8d4b4bc7-v7szb to minikube
  Normal  Pulled     4m8s  kubelet            Container image "mcr.microsoft.com/mssql/server:2022-latest" already present on machine
  Normal  Created    4m8s  kubelet            Created container mssql
  Normal  Started    4m8s  kubelet            Started container mssql

SSMS连接配置与报错

连接配置

Server name: localhost,30001
Authentication: SQL Server authentication
Login: sa
Password: Qwerty123!
Encryption: Mandatory
[V] Trust server certificate

报错信息

无法连接到localhost,30001。
其他信息:
在建立与SQL Server的连接时出现与网络相关的或特定于实例的错误。
找不到服务器或无法访问服务器。请验证实例名称是否正确,并且SQL Server已配置为允许远程连接。(provider: TCP provider, error: 0 - 远程计算机拒绝了网络连接。) (Microsoft SQL Server, Error: 1225)


排查建议

  • 调整端口访问方式:注意Service的端口映射为30001:31453/TCP,其中31453是NodePort,可直接尝试用localhost:31453连接;或执行minikube service mssql-service -n new-kubernetes获取官方推荐的访问地址。
  • 验证容器内服务状态:进入容器检查SQL Server是否正常运行
    kubectl exec -it mssql-deployment-5d8d4b4bc7-v7szb -n new-kubernetes -- /bin/bash
    # 容器内执行连接测试
    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Qwerty123!
    
    若连接失败,查看容器日志定位服务启动问题:
    kubectl logs mssql-deployment-5d8d4b4bc7-v7szb -n new-kubernetes
    
  • 修复Minikube Tunnel环境:Docker上下文警告可能影响Tunnel生效,尝试重启Minikube及Tunnel:
    minikube stop && minikube delete && minikube start
    # 重新部署YAML后启动Tunnel
    minikube tunnel -n new-kubernetes
    
  • 检查主机防火墙:临时关闭主机防火墙,测试是否能连接;若恢复,需添加对应端口的TCP访问规则。
  • 确认SQL Server远程配置:容器内验证远程连接配置是否开启
    kubectl exec -it mssql-deployment-5d8d4b4bc7-v7szb -n new-kubernetes -- /bin/bash
    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Qwerty123! -Q "EXEC sp_configure 'remote access'; RECONFIGURE;"
    

内容的提问来源于stack exchange,提问作者Diner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:30:12