(Kubernetes + Docker) Skaffold 不断终止我的部署文件:错误:无法在 2 分钟内稳定:超出上下文截止日期

JAN*_*JAN 4 docker kubernetes kubernetes-ingress skaffold nginx-ingress

我正在尝试使用 Skaffold 在我的本地机器上部署一个微服务系统。

ingress-srv.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: ticketing.dot
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3000
Run Code Online (Sandbox Code Playgroud)

auth-depl.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: ****MYDOCKERID****/auth
          env:
            - name: JWT_KEY
              valueFrom:
                secretKeyRef:
                  name: jwt-secret
                  key: JWT_KEY

---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      protocol: TCP
      port: 3000
      targetPort: 3000
Run Code Online (Sandbox Code Playgroud)

auth-mongo-depl.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-mongo-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth-mongo
  template:
    metadata:
      labels:
        app: auth-mongo
    spec:
      containers:
        - name: auth-mongo
          image: mongo
---
apiVersion: v1
kind: Service
metadata:
  name: auth-mongo-srv
spec:
  selector:
    app: auth-mongo
  ports:
    - name: db
      protocol: TCP
      port: 27017
      targetPort: 27017
Run Code Online (Sandbox Code Playgroud)

我遵循了手册中的指导方针:

https://kubernetes.github.io/ingress-nginx/deploy/
Run Code Online (Sandbox Code Playgroud)

并点击:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.0/deploy/static/provider/cloud/deploy.yaml
Run Code Online (Sandbox Code Playgroud)

然而 Skaffold 不断终止部署:

https://kubernetes.github.io/ingress-nginx/deploy/
Run Code Online (Sandbox Code Playgroud)

我们如何解决这个烦人的问题?

编辑 9:44 AM 以色列时间:

C:\Development-T410\Micro Services - JAN>kubectl get pods
NAME                                 READY   STATUS                       RESTARTS   AGE
auth-depl-645bbf7b9d-llp2q           0/1     CreateContainerConfigError   0          115s
auth-depl-c6c765d7c-7wvcg            0/1     CreateContainerConfigError   0          28m
auth-mongo-depl-6b594c4847-4kzzt     1/1     Running                      0          115s
client-depl-5888f95b59-vznh6         1/1     Running                      0          114s
nats-depl-7dfccdf5-874vm             1/1     Running                      0          114s
orders-depl-74f4d48559-cbwlp         0/1     CreateContainerConfigError   0          114s
orders-depl-78fc845b4-9tfml          0/1     CreateContainerConfigError   0          28m
orders-mongo-depl-688676d675-lrvhp   1/1     Running                      0          113s
tickets-depl-7cc7ddbbff-z9pvc        0/1     CreateContainerConfigError   0          113s
tickets-depl-8574fc8f9b-tm6p4        0/1     CreateContainerConfigError   0          28m
tickets-mongo-depl-b95f45947-hf6wq   1/1     Running                      0          113s

C:\Development-T410\Micro Services>kubectl logs auth-depl-c6c765d7c-7wvcg
Error from server (BadRequest): container "auth" in pod "auth-depl-c6c765d7c-7wvcg" is waiting to start: CreateContainerConfigError
Run Code Online (Sandbox Code Playgroud)

Ric*_*ico 5

看起来您的auth-depl部署失败了。可能是容器崩溃或出错。要调试,您可以查看 pod 日志

$ kubectl logs auth-depl-xxxxxxxxxx-xxxxx
Run Code Online (Sandbox Code Playgroud)

确保您使用该--cleanup=false选项运行 skaffold,以便您可以进行调试。例如,

$ skaffold dev --cleanup=false
Run Code Online (Sandbox Code Playgroud)

更新:

根据日志,您的 Kubernetes Secret 及其定义方式(可能是格式或 YAML 格式)似乎存在问题。这个答案揭示了可能是什么问题的一些细节:Minikube cluster 中的 Pod status as `CreateContainerConfigError`