现有连接被远程主机强行关闭 - Kubernetes

Existing connection was forcibly closed by the remote host - Kubernetes

我是 kubernetes 的新手,正在学习 YouTube 上关于微服务的 Les Jackson 课程。在部署 SQL 服务器后,我无法使用 Management Studio 连接到它。 (在球场上 5:30:00 左右)

这是用于部署的 yaml 代码,它与课程中使用的代码几乎相同我只是添加了一些行,因为我在容器上收到错误“crashLoopBackOff”:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
        - name: mssql
          image: mcr.microsoft.com/mssql/server:2019-latest
          command: ["/bin/bash", "-c", "--"] #added this 
          args: ["while true; do sleep 30; done;"] #two lines
          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-srv
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

广告连播说明:

谢谢!

好吧,在多次尝试完全重现您的情况之后,我成功了。我遇到了几个问题,我将在下面描述其解决方案。根据输入参数,我有 Windows 10 pro、安装的 Docker desktopKubernetes v1.22.5。还有 2 个文件 pvc.yamldeployment.yaml.

  1. 我们将从删除所有以前的集群和节点开始,重新开始。最后,重新启动您的系统。
# Write neme of your config files 
kubectl delete -f pvc.yaml   
kubectl delete -f deployment.yaml
  1. 之后,启动 Docker desktop 并在 Settings 选项卡中,select Kubernetes 并启动它。
  2. 启动 command-line 终端,导航到包含您的文件的目录,然后 运行 命令: kubectl create -f pvc.yaml

配置的位置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mssql-claim
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi

运行 下一个创建秘密的命令: kubectl create secret generic mssql5 --from-literal=SA_PASSWORD="MyC0m9l&xPassw0rd" 运行 最后一条命令: kubectl create -f deployment.yaml

配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mssql-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mssql
  template:
    metadata:
      labels:
        app: mssql
    spec:
      containers:
        - name: mssql
          image: mcr.microsoft.com/mssql/server:2019-latest
          ports:
            - containerPort: 1433
          env:
          - name: MSSQL_PID
            value: "Express"
          - name: ACCEPT_EULA
            value: "Y"
          - name: SA_PASSWORD 
            valueFrom:
              secretKeyRef:
                name: mssql5 
                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-srv
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
  1. 集群和服务启动后,使用命令 kubectl get pods, kubectl get services 检查它们。如果一切正常,您会看到下面屏幕截图的输出。

  1. 您可以按照 documentation 运行 命令继续检查您的秘密文件: kubectl edit secrets mysecret
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  SA_PASSWORD: TXlDMG05bCZ4UGFzc3cwcmQ=  # << ERROR
kind: Secret
metadata:
  creationTimestamp: "2022-03-23T17:31:31Z"
  name: mssql5
  namespace: default
  resourceVersion: "633"
  uid: 62184a05-7641-4296-944f-4e9a149e5bb5
type: Opaque
  1. 我的密码与我创建的密码不同。如果您还编辑了文件并重新启动服务。之后你可以连接到你的 SQL Server.
  2. 如果问题仍然存在,您可以使用 Windows Authentication 连接,然后单击 Security > Logins > Properties 在您的用户名上鼠标右键 > Properties 并在那里更改密码。