![](/img/trans.png)
[英]Unable to connect to SQL server in AWS from SQL server Management studio
[英]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.