我正在尝试在本地测试一些微服务。net Core with Minikube。我有两个微服务,它们相互通信,并通过clusterIP与一个带有mssql的容器通信。它工作得很好,但我不能从SQL管理工作室直接连接到mssql。
下面是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"访问它知道怎么从外部访问吗?
感谢从外部世界访问应用程序有不同的方式。如果你使用LoadBalancer
类型的服务,那么你可以执行以下步骤从外部访问你的应用程序(仅适用于minikube):
- 在不同的终端上运行以下命令:
minikube tunnel
- 获取服务
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
- 在浏览器中打开(确保没有代理设置)
http://REPLACE_WITH_EXTERNAL_IP:1443
你也可以使用端口转发机制来访问你的应用,如:
kubectl port-forward service/<your service> 1443:1443
裁判:https://minikube.sigs.k8s.io/docs/handbook/accessing/
我也看了Les jackson的教程)并且有同样的问题需要做:
minikube ip
以Admin角色在cmd中写入,您将获得minikube ip,之后:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mssql-clusterip-srv ClusterIP 10.98.79.121 <none> 1433/TCP 46m
mssql-loadbalancer LoadBalancer 10.110.176.240 <pending> 1433:32509/TCP 46m
这里你有你的loadBalancer服务,你需要使用外部端口连接到Sql Server(外部端口在我的情况下是32509,这篇文章将重定向到1433端口)
服务器名称将是:your_minikube_ip, loadBalancer_external_port
我希望它对你有用