kubernetes - 支架 1.4.0 : "Skipping deploy due to sync error: copying files:"

标签 kubernetes skaffold

使用:

  • 基架 1.4.0

  • 迷你库 1.6.2

  • kubectl:客户端 1.15.5 和服务器 1.17.0

  • Django 3.0.3

  • python 3.8.2

我最近刚开始收到这个错误,因为我正在处理 Django API。每当我在进行更改后保存时,我都会得到:

WARN[0234] Skipping deploy due to sync error: copying files: Running [kubectl --context minikube exec api-deployment-6946878554-n7lc2 --namespace default -c api -i -- tar xmf - -C / --no-same-owner]
 - stdout: 
 - stderr: error: unable to upgrade connection: container not found ("api")
: exit status 1 

不确定是什么改变导致了这个。我必须执行 CTRL + C 来关闭 Skaffold 并重新启动它以反射(reflect)更改。

这是我的skaffold.yaml:

apiVersion: skaffold/v1beta15
kind: Config
build:
  local:
    push: false
  artifacts:
    - image: postgres
      context: postgres
      docker:
        dockerfile: Dockerfile.dev
      sync:
        manual:
          - src: "***/*.sql"
            dest: .
    - image: testappacr.azurecr.io/test-app-api
      context: api
      docker:
        dockerfile: Dockerfile.dev
      sync:
        manual:
          - src: "***/*.py"
            dest: .
deploy:
  kubectl:
    manifests:
      - manifests/dev-ingress.yaml 
      - manifests/postgres.yaml
      - manifests/api.yaml

还有 api.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      component: api
  template:
    metadata:
      labels:
        component: api
    spec:
      containers:
        - name: api
          image: testappacr.azurecr.io/test-app-api
          ports:
            - containerPort: 5000
          env:
            - name: PGUSER
              valueFrom:
                secretKeyRef:
                  name: test-app-secrets
                  key: PGUSER
            - name: PGHOST
              value: postgres-cluster-ip-service
            - name: PGPORT
              value: "1423"
            - name: PGDATABASE
              valueFrom:
                secretKeyRef:
                  name: test-app-secrets
                  key: PGDATABASE
            - name: PGPASSWORD
              valueFrom:
                secretKeyRef:
                  name: test-app-secrets
                  key: PGPASSWORD
            - name: SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: test-app-secrets
                  key: SECRET_KEY
            - name: DEBUG
              valueFrom:
                secretKeyRef:
                  name: test-app-secrets
                  key: DEBUG
          livenessProbe:
            tcpSocket:
              port: 5000
            initialDelaySeconds: 2
            periodSeconds: 2
          readinessProbe:
            tcpSocket:
              port: 5000
            initialDelaySeconds: 2
            periodSeconds: 2
          volumeMounts:
          - mountPath: "/mnt/test-app"
            name: file-storage
      volumes:
        - name: file-storage
          persistentVolumeClaim:
            claimName: file-storage
---
apiVersion: v1
kind: Service
metadata:
  name: api-cluster-ip-service
spec:
  type: ClusterIP
  selector:
    component: api
  ports:
    - port: 5000
      targetPort: 5000

关于这里可能发生的事情有什么建议吗?

最佳答案

发现问题是由 api.yaml 中的 readinessProbelivenessProbe 引起的。

          livenessProbe:
            tcpSocket:
              port: 5000
            initialDelaySeconds: 2
            periodSeconds: 2
          readinessProbe:
            tcpSocket:
              port: 5000
            initialDelaySeconds: 2
            periodSeconds: 2

现在我没有得到这个错误。

但是,我首先将它们放在那里的原因是因为 skaffold 有时会在 API 之后启动数据库,从而导致它失败。所以这就是我的权衡:没有 probes 数据库偶尔会在 API 导致失败后启动,或者有它们并且更频繁地导致与这个问题相关的错误。

关于kubernetes - 支架 1.4.0 : "Skipping deploy due to sync error: copying files:",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60511645/

相关文章:

kubernetes - 为每个用户授予特定 namespace 的特权

kubernetes - 访问Kubernetes仪表板以查看Pod日志

kubernetes - 如何防止将 Kubernetes Secrets 推送到 git 存储库?

kubernetes - 如何在内部 Kubernetes 集群上创建持久卷

windows - 如何在Windows上配置IBM Kubernetes CLI

kubernetes - 如何将 Skaffold 与 kubernetes 卷一起使用?

kubernetes - 将 skaffold 配置文件绑定(bind)到集群

reactjs - 支架和create-react-app停止工作

kubernetes - 两级调度器(如在 Apache Mesos 中)与单级调度器(如在 Nomad 或 Kubernetes 中)的优缺点是什么?

Kubernetes-入口 : Error: connect ECONNREFUSED 127. 0.0.1:80