deployment - 当服务在 minikube 中正确部署时,为什么应用部署状态为 "Available:0"?

标签 deployment kubectl minikube

我正在尝试部署应用程序的后端组件来测试 REST API。我已经对组件进行了 docker 化并在 minikube 中创建了一个镜像。我创建了一个 yaml用于部署和创建服务的文件。现在,当我尝试通过 sudo kubectl create -f frontend-deployment.yaml 部署它时,它部署时没有任何错误,但是当我检查部署状态时,显示的是这样的:

NAME   READY   UP-TO-DATE   AVAILABLE   AGE
back   0/3     3            0           2m57s

有趣的是,与此部署相对应的服务可用。

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
back         ClusterIP   10.98.73.249   <none>        8080/TCP         3m9s

我还尝试通过单独运行部署语句来创建部署,例如 sudo kubectl run back --image=back --port=8080 --image-pull-policy Never但结果是一样的。

这是我的 `deployment.yaml 文件的样子:

kind: Service
apiVersion: v1
metadata:
  name: back
spec:
  selector:
    app: back
  ports:
  - protocol: TCP
    port: 8080
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: back
spec:
  selector:
      matchLabels:
        app: back
  replicas: 3
  template:
    metadata:
      labels:
        app: back
    spec:
      containers:
        - name: back
          image: back
          imagePullPolicy: Never
          ports:
            - containerPort: 8080

我如何才能启动并运行此部署,因为这会导致应用程序前端出现内部服务器错误?

pod 返回说明

Name:           back-7fd9995747-nlqhq
Namespace:      default
Priority:       0
Node:           minikube/10.0.2.15
Start Time:     Mon, 15 Jul 2019 12:49:52 +0200
Labels:         pod-template-hash=7fd9995747
                run=back
Annotations:    <none>
Status:         Running
IP:             172.17.0.7
Controlled By:  ReplicaSet/back-7fd9995747
Containers:
  back:
    Container ID:   docker://8a46e16c52be24b12831bb38d2088b8059947d099299d15755d77094b9cb5a8b
    Image:          back:latest
    Image ID:       docker://sha256:69218763696932578e199b9ab5fc2c3e9087f9482ac7e767db2f5939be98a534
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Mon, 15 Jul 2019 12:49:54 +0200
      Finished:     Mon, 15 Jul 2019 12:49:54 +0200
    Ready:          False
    Restart Count:  1
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-c247f (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-c247f:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-c247f
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason     Age              From               Message
  ----     ------     ----             ----               -------
  Normal   Scheduled  6s               default-scheduler  Successfully assigned default/back-7fd9995747-nlqhq to minikube
  Normal   Pulled     4s (x2 over 5s)  kubelet, minikube  Container image "back:latest" already present on machine
  Normal   Created    4s (x2 over 5s)  kubelet, minikube  Created container back
  Normal   Started    4s (x2 over 5s)  kubelet, minikube  Started container back
  Warning  BackOff    2s (x2 over 3s)  kubelet, minikube  Back-off restarting failed container

最佳答案

如您所见,三个 Pod 中有零个处于就绪状态:

NAME   READY   AVAILABLE
back   0/3     0 

要了解发生了什么,您应该检查底层 Pod:

$ kubectl get pods -l app=back

然后查看事件的描述:

$ kubectl describe pod back-...

关于deployment - 当服务在 minikube 中正确部署时,为什么应用部署状态为 "Available:0"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56853218/

相关文章:

iphone - 如何发布应用程序进行测试

java - WAS 中可部署的 Ear 的最大尺寸限制

docker - 可以在kubernetes容器中托管两个Web服务吗?

kubernetes - 限制每个节点的 Pod 数量

kubernetes - Kubernetes将本地系统中的目录共享到kubernetes容器

deployment - 初始化字符串的格式不符合从索引 0 开始的规范

ruby - 提交时在开发/QA 服务器上自动化 git pull 过程

prometheus - 单独监控 AWS Fargate 上的 EKS 集群

kubernetes - 在 Docker for Mac 上启动 Ingress 服务

尝试挂载卷时出现 python kubernetes API 错误