簡體   English   中英

無法從Management Studio連接到Azure(ACS)上的Kubernetes上的SQL Server容器

[英]Unable to connect to SQL Server Container on Kubernetes on Azure (ACS) from Management Studio

我創建了一個自定義SQL Server數據庫容器映像。 我可以將其作為容器在本地計算機上運行(帶有Windows的Windows 10和Docker)。 運行該容器后,我可以使用服務器名稱127.0.0.1:1433從SQL Server Management Studio成功連接到它。

我正在嘗試在Azure的Kubernetes中運行與StatefulSet相同的容器。

以下是Kubernetes的資源。

機密(用於SQL Server SA密碼)

apiVersion: v1
kind: Secret
metadata:
  name: sqlsecret
type: Opaque
data:
  sapassword: base64encodedvalue

存儲類(StatefulSet-外部存儲)

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azurestorageclass
provisioner: kubernetes.io/azure-disk
parameters:
  skuName: Standard_LRS
  location: southeastasia
  storageAccount: myaccount

外部服務(也嘗試了無頭服務,但我還需要從Pod進行外部連接)

apiVersion: v1
kind: Service
metadata:
  name: sqlservice
  labels:
    name: sqlservice
spec:
  ports:
  - port: 1433
    targetPort: 1433
  externalIPs: 
    - Kubernetes-Cluster-LB-Public-IP-Address-From-Azure-Portal
  selector:
    role: sqlservice

最后是StatefulSet。

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: sqlserverstatefulset
spec:
  serviceName: "sqlservice"
  replicas: 1
  template:
    metadata:
      labels:
        role: sqlservice
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: sqlinux
          image: custom-image-from-docker-hub
          env:
            - name: SA_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: sqlsecret
                  key: sapassword
            - name: ACCEPT_EULA
              value: "Y"
          ports:
            - containerPort: 1433
          volumeMounts:
            - name: sql-persistent-storage
              mountPath: /data/db
  volumeClaimTemplates:
  - metadata:
      name: sql-persistent-storage
      annotations:
        volume.beta.kubernetes.io/storage-class: "azurestorageclass"
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 100Gi

我運行此命令以從本地計算機配置這些資源(上下文指向Azure群集)。

kubectl create -f c:\sqlkube.yaml

我所有的資源都已成功配置。 Kubernetes儀表板( kubctl proxy )中的全部為綠色,沒有紅色。

我還為端口1433設置了Azure負載平衡器的運行狀況探針和負載平衡規則。

但是,當我在SQL Server Management Studio中輸入LB:1433的公共IP地址作為服務器名稱時,出現以下錯誤。

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - The wait operation timed out.) (Microsoft SQL Server, Error: 258)

我想念什么?

服務需要更改為以下type: LoadBalancer 如果已經在與k8s群集相同的資源組中配置了靜態IP,則可以將其指定為loadBalancerIP: WW.XX.YY.ZZ 如果有評論,服務將提供一個新的IP地址。 使用kubectl describe service sqlservice查找IP地址或使用k8s儀表板。

apiVersion: v1
kind: Service
metadata:
  name: sqlservice
  labels:
    app: sqlservice
spec:
  type: LoadBalancer
  #loadBalancerIP: 52.187.173.125
  ports:
  - port: 1433
    targetPort: 1433
  selector:
    app: sqlinux

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM