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