如何在Kubernetes群集中同时部署多个部署?

如何在Kubernetes群集中同时部署多个部署?,kubernetes,kubectl,azure-container-service,Kubernetes,Kubectl,Azure Container Service,我的体系结构中有多个.NET微服务,我为每个微服务创建了一个部署对象,现在我尝试部署到运行kubernetes的Azure容器服务。当我运行kubectl apply-f services.yml时,我总是有一些失败的pod。但是如果我单独运行这些部署,那么它们都可以工作。 我在总结中收到的错误是: 无法启动容器,系统找不到指定的文件。 pods状态显示为:CrashLoopBackOff 我的服务文件如下所示: apiVersion: apps/v1beta1 kind: Deployment

我的体系结构中有多个.NET微服务,我为每个微服务创建了一个部署对象,现在我尝试部署到运行kubernetes的Azure容器服务。当我运行kubectl apply-f services.yml时,我总是有一些失败的pod。但是如果我单独运行这些部署,那么它们都可以工作。 我在总结中收到的错误是: 无法启动容器,系统找不到指定的文件。 pods状态显示为:CrashLoopBackOff

我的服务文件如下所示:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: service1-deployment
  labels:
    app: service1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: service1
  template:
    metadata:
      labels:
        app: service1
    spec:
      containers:
      - name: service1
        image: iolregistry.azurecr.io/panviva/doc:v1
        command: ["service1.exe"]
      imagePullSecrets:
      - name: regsecret
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: service2-deployment
  labels:
    app: service2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: service2
  template:
    metadata:
      labels:
        app: service2
    spec:
      containers:
      - name: service2
        image: iolregistry.azurecr.io/panviva/doc:v1
        command: ["service2.exe"]
      imagePullSecrets:
      - name: regsecret
事实上,我在文件中有更多的部署,但你明白了。 我尝试将这些部署拆分为不同的文件,并调用kubectl apply-f service1.yml-f service2.yml,但仍然收到相同的错误。我相信这与库伯内特一次启动多个吊舱有关。我怎样才能解决这个问题

编辑: 描述失败的pod会产生以下结果:

Name:           getdocumentservice-deployment-528941145-cpt30
Namespace:      default
Node:           e527bacs9002/10.240.0.5
Start Time:     Fri, 29 Dec 2017 05:02:31 +0000
Labels:         app=getdocumentservice
                pod-template-hash=528941145
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"getdocumentservice-deployment-528941145","uid":"793ff632-ec55-11...
Status:         Running
IP:
Controlled By:  ReplicaSet/getdocumentservice-deployment-528941145
Containers:
  getdocumentservice:
    Container ID:  docker://774d7bd23ce3da64a747db4c3737123a56069de97c7b3c3cd11e898e3c9e0e42
    Image:         iolregistry.azurecr.io/panviva/doc:v1
    Image ID:      docker-pullable://iolregistry.azurecr.io/panviva/doc@sha256:1bc4f4840707c0174a6d9665828042b04045da2d30e77d96fa325c2f3ae245a6
    Port:          <none>
    Command:
      ./modules/GetDocumentService/GetDocumentService.exe
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       ContainerCannotRun
      Message:      container 774d7bd23ce3da64a747db4c3737123a56069de97c7b3c3cd11e898e3c9e0e42 encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2) extra info: {"ApplicationName":"","CommandLine":"./modules/GetDocumentService/GetDocumentService.exe","User":"","WorkingDirectory":"C:\\app\\m
odules","Environment":{"KUBERNETES_PORT":"tcp://10.0.0.1:443","KUBERNETES_PORT_443_TCP":"tcp://10.0.0.1:443","KUBERNETES_PORT_443_TCP_ADDR":"10.0.0.1","KUBERNETES_PORT_443_TCP_PORT":"443","KUBERNETES_PORT_443_TCP_PROTO":"tcp","KUBERNETES_SERVICE_HOST":"10.0.0.1","KUBERNETES_SERVICE_PORT":"443","KUBERNETES_SERVICE_PORT_HTTPS":"443"},"EmulateConsole":false,"Creat
eStdInPipe":true,"CreateStdOutPipe":true,"CreateStdErrPipe":true,"ConsoleSize":[0,0]}
      Exit Code:    128
      Started:      Fri, 29 Dec 2017 05:18:41 +0000
      Finished:     Fri, 29 Dec 2017 05:18:41 +0000
    Ready:          False
    Restart Count:  8
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9l4dp (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  default-token-9l4dp:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9l4dp
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age                From                   Message
  ----     ------                 ----               ----                   -------
  Normal   Scheduled              20m                default-scheduler      Successfully assigned getdocumentservice-deployment-528941145-cpt30 to e527bacs9002
  Normal   SuccessfulMountVolume  20m                kubelet, e527bacs9002  MountVolume.SetUp succeeded for volume "default-token-9l4dp"
  Normal   Pulled                 4m (x9 over 20m)   kubelet, e527bacs9002  Container image "iolregistry.azurecr.io/panviva/doc:v1" already present on machine
  Normal   Created                4m (x9 over 20m)   kubelet, e527bacs9002  Created container
  Warning  Failed                 4m (x9 over 20m)   kubelet, e527bacs9002  Error: failed to start container "getdocumentservice": Error response from daemon: {"message":"container getdocumentservice encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file specified. (0x2) extra info: {\"ApplicationName\":\"\"
,\"CommandLine\":\"./modules/GetDocumentService/GetDocumentService.exe\",\"User\":\"\",\"WorkingDirectory\":\"C:\\\\app\\\\modules\",\"Environment\":{\"KUBERNETES_PORT\":\"tcp://10.0.0.1:443\",\"KUBERNETES_PORT_443_TCP\":\"tcp://10.0.0.1:443\",\"KUBERNETES_PORT_443_TCP_ADDR\":\"10.0.0.1\",\"KUBERNETES_PORT_443_TCP_PORT\":\"443\",\"KUBERNETES_PORT_443_TCP_PROTO\
":\"tcp\",\"KUBERNETES_SERVICE_HOST\":\"10.0.0.1\",\"KUBERNETES_SERVICE_PORT\":\"443\",\"KUBERNETES_SERVICE_PORT_HTTPS\":\"443\"},\"EmulateConsole\":false,\"CreateStdInPipe\":true,\"CreateStdOutPipe\":true,\"CreateStdErrPipe\":true,\"ConsoleSize\":[0,0]}"}
名称:getdocumentservice-deployment-528941145-cpt30
名称空间:默认值
节点:e527bacs9002/10.240.0.5
开始时间:2017年12月29日星期五05:02:31+0000
标签:app=getdocumentservice
pod模板哈希=528941145
注释:kubernetes.io/创建人={“种类”:“SerializedReference”,“apiVersion”:“v1”,“引用”:{“种类”:“ReplicaSet”,“命名空间”:“默认”,“名称”:“getdocumentservice-deployment-528941145”,“uid”:“793ff632-ec55-11…”。。。
状态:正在运行
知识产权:
控制人:ReplicaSet/getdocumentservice-deployment-528941145
容器:
getdocumentservice:
容器ID:docker://774d7bd23ce3da64a747db4c3737123a56069de97c7b3c3cd11e898e3c9e0e42
图像:iolregistry.azurecr.io/panviva/doc:v1
图像ID:docker-pullable://iolregistry.azurecr.io/panviva/doc@sha256:1bc4f4840707c0174a6d9665828042b04045da2d30e77d96fa325c2f3ae245a6
端口:
命令:
./modules/GetDocumentService/GetDocumentService.exe
国家:等待
原因:仓促退却
最后状态:终止
原因:集装箱运输公司
消息:容器774d7bd23ce3da64a747db4c3737123a56069de97c7b3c3cd11e898e3c9e0e42在CreateProcess期间遇到错误:Windows系统调用失败:系统找不到指定的文件。(0x2)额外信息:{“应用程序名”:“命令行”:“/modules/GetDocumentService/GetDocumentService.exe”,“用户”:“WorkingDirectory”:”C:\\app\\m
奥德莱斯,“环境”:{“库伯内特斯港”:”tcp://10.0.0.1:443“KUBERNETES\u PORT\u 443\u TCP”:tcp://10.0.0.1:443“,“KUBERNETES_PORT_443_TCP_ADDR:”10.0.0.1“,”KUBERNETES_PORT_443_TCP_PORT:”443“,”KUBERNETES_PORT_443_TCP_PROTO:”TCP“,”KUBERNETES_SERVICE_HOST:”10.0.0.1“,”KUBERNETES_SERVICE_PORT:”443“,”KUBERNETES_SERVICE_PORT:”HTTPS:”443“,”443“,”EmularceConsole:false,“创建
eStdInPipe“:true,“CreateStdOutPipe”:true,“CreateStderPipe”:true,“ConsoleSize”:[0,0]}
退出代码:128
开始时间:2017年12月29日星期五05:18:41+0000
完成日期:2017年12月29日星期五05:18:41+0000
就绪:错误
重新启动计数:8
环境:
挂载:
/来自default-token-9l4dp(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备错误
播客预定为真
卷数:
default-token-9l4dp:
类型:Secret(由Secret填充的卷)
SecretName:default-token-9l4dp
可选:false
QoS等级:最佳努力
节点选择器:
容忍:
活动:
从消息中键入原因年龄
----     ------                 ----               ----                   -------
正常计划的20m默认计划程序已成功将getdocumentservice-deployment-528941145-cpt30分配给e527bacs9002
正常成功装入卷20m kubelet,e527bacs9002装入卷。卷“default-token-9l4dp”的安装成功
机器上已存在正常的4m(x9超过20m)kubelet、e527bacs9002容器映像“iolregistry.azurecr.io/panviva/doc:v1”
正常创建4m(x9超过20m)kubelet,e527bacs9002创建容器
警告失败4m(x9超过20m)kubelet,e527bacs9002错误:无法启动容器“getdocumentservice”:来自守护程序的错误响应:{“消息”:“容器getdocumentservice在CreateProcess期间遇到错误:Windows系统调用失败:系统找不到指定的文件。(0x2)额外信息:{\”应用程序名称\“:\”\“
“,”命令行\“:\”/modules/GetDocumentService/GetDocumentService.exe \“,”用户\“:\”,”工作目录\“:\”C:\\\\app\\\\modules\”,”环境\“:{“KUBERNETES\\端口\\”:\”tcp://10.0.0.1:443\“,\“KUBERNETES\u PORT\u 443\u TCP\”:\”tcp://10.0.0.1:443\“,”KUBERNETES\u PORT\u 443\u TCP\u ADDR\“:”10.0.0.1\“,”KUBERNETES\u PORT\u 443\u TCP\u PORT\“:”443\“,”KUBERNETES_端口_443_TCP_协议\
“:\“tcp\”、“KUBERNETES\ u服务\ u主机\”:“10.0.0.1\”、“KUBERNETES\ u服务\ u端口\”:“443\”、“KUBERNETES\ u服务\ u端口\ u HTTPS\”:“443\”、“EmulateConsole\”:false、“CreateStdInPipe\:true、“CreateStdOutPipe\”:true、“CreateStDerPipe\”:true、“ConsoleSize\”:[0,0]}”

Paul-多个吊舱一次启动看起来不像问题。CrashLoopBackOff表示图像提取/调度有问题。您能“描述”一下吗其中一个POD和粘贴相关错误等?更新了问题。这不是映像拉取问题,因为当我单独运行部署时,它可以工作。我可以运行多达四个单独的部署,它们可以工作,但添加更多的是当它开始失败时。同样,将部署组合在一起也会导致失败扫描您从POD获取日志,kubectl日志[-f][-p]POD[-c CONTAINER]无法获取日志,因为容器无法启动,因此表示无法打开日志文件在crashLoop之前是否尝试使用exec命令进入容器