【问题标题】:SQL Server Kubernetes StatefulSet deployment not readySQL Server Kubernetes StatefulSet 部署未准备就绪
【发布时间】:2021-12-30 01:20:10
【问题描述】:

我正在尝试将 SQL Server 数据库的 Kubernetes 部署配置为 StatefulSet 以连接到我的 Web API。

这是我的.Yaml 文件:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: firstone-mssql-statefulset
spec:
  replicas: 1
  serviceName: "firstone-mssql-service"
  selector:
     matchLabels:
       app: firstone-mssql
  template:
    metadata:
      labels:
        app: firstone-mssql
    spec:
      containers:
      - name: firstoneSQL
        image: mcr.microsoft.com/mssql/server:2019-latest
        resources:
            limits:
              memory: "2Gi"
              cpu: "500m"
        ports:
            - containerPort: 1433
        env:
            - name: MSSQL_PID
              value: "Developer"
            - name: ACCEPT_EULA
              value: "Y"
            - name: SA_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: firstone-mssql
                  key: SA_PASSWORD 
        volumeMounts:
            - mountPath: /var/opt/mssql 
              name: data
  volumeClaimTemplates:
    - metadata:
         name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: firstone-mssql-service
spec:
  selector:
    app: firstone-mssql
  type: LoadBalancer
  ports:
    - port: 1433
      targetPort: 1433

运行以下命令获取状态集时

kubectl get statefulsets

我得到了以下

NAME                         READY   AGE
firstone-mssql-statefulset   0/1     12m 

更新

运行以下命令获取 pod 时

kubectl get pods

我得到了以下

NAME                             READY   STATUS    RESTARTS       AGE

【问题讨论】:

  • memory: "128Mi"?根据Docker hub 的要求,至少 2GB 的 RAM(2017-CU2 之前为 3.25GB)。
  • 我更改了它,但它仍然无法正常工作。出现同样的错误。
  • 如果你kubectl logs <your-pod-name> 它会报告什么错误?
  • 没有创建 pod。我用kubectl get pods 输出更新了问题
  • 请运行kubectl describe statefulset <your statefulset name>并将结果粘贴到问题中。

标签: sql-server kubernetes


【解决方案1】:

感谢@MikołajGłodziak 的评论。

我做了kubectl describe statefulset <your statefulset name>,发现如下问题

Events:
  Type     Reason        Age                    From                    Message
  ----     ------        ----                   ----                    -------
  Warning  FailedCreate  15h (x31 over 16h)     statefulset-controller  create Pod firstone-mssql-statefulset-0 in StatefulSet firstone-mssql-statefulset failed error: Pod "firstone-mssql-statefulset-0" is invalid: spec.containers[0].name: Invalid value: "firstoneSQL": a lowercase RFC 1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')

问题在于规范-> 容器-> 名称

spec:
      containers:
      - name: firstoneSQL <-- this is wrong label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character case 

通过将此大写字符更改为小写字符,创建的状态集具有就绪状态

spec:
      containers:
      - name: firstone-sql

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 2020-04-29
    • 2020-07-14
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2019-07-01
    • 2015-04-30
    • 2011-12-09
    相关资源
    最近更新 更多