正在尝试创建Kubernetes部署,但显示0个可用吊舱
我是k8s新手,所以我的一些术语可能不适用。但基本上,我正在尝试部署一个简单的web api:在n个POD前面部署一个负载平衡器(现在,n=1) 但是,当我尝试访问负载平衡器的IP地址时,它不会显示我的web应用程序。当我运行kubectl get deployments时,我得到以下结果:正在尝试创建Kubernetes部署,但显示0个可用吊舱,kubernetes,kubectl,Kubernetes,Kubectl,我是k8s新手,所以我的一些术语可能不适用。但基本上,我正在尝试部署一个简单的web api:在n个POD前面部署一个负载平衡器(现在,n=1) 但是,当我尝试访问负载平衡器的IP地址时,它不会显示我的web应用程序。当我运行kubectl get deployments时,我得到以下结果: NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE tl-api 1 1 1 0
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
tl-api 1 1 1 0 4m
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 11m default-scheduler Successfully assigned tl-api-3466491809-vd5kg to dc9ebacs9000
Normal SuccessfulMountVolume 11m kubelet, dc9ebacs9000 MountVolume.SetUp succeeded for volume "default-token-v3wz9"
Normal Pulling 4m (x6 over 10m) kubelet, dc9ebacs9000 pulling image "tlk8s.azurecr.io/devicecloudwebapi:v1"
Warning FailedSync 1s (x50 over 10m) kubelet, dc9ebacs9000 Error syncing pod
Normal BackOff 1s (x44 over 10m) kubelet, dc9ebacs9000 Back-off pulling image "tlk8s.azurecr.io/devicecloudwebapi:v1"
这是我的YAML文件。如果有什么不对劲的话,请告诉我——我对这个很陌生
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: tl-api
spec:
replicas: 1
template:
metadata:
labels:
app: tl-api
spec:
containers:
- name: tl-api
image: tlk8s.azurecr.io/devicecloudwebapi:v1
ports:
- containerPort: 80
imagePullSecrets:
- name: acr-auth
nodeSelector:
beta.kubernetes.io/os: windows
---
apiVersion: v1
kind: Service
metadata:
name: tl-api
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: tl-api
编辑2:当我尝试使用ACS(支持Windows)时,我得到以下结果:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
tl-api 1 1 1 0 4m
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 11m default-scheduler Successfully assigned tl-api-3466491809-vd5kg to dc9ebacs9000
Normal SuccessfulMountVolume 11m kubelet, dc9ebacs9000 MountVolume.SetUp succeeded for volume "default-token-v3wz9"
Normal Pulling 4m (x6 over 10m) kubelet, dc9ebacs9000 pulling image "tlk8s.azurecr.io/devicecloudwebapi:v1"
Warning FailedSync 1s (x50 over 10m) kubelet, dc9ebacs9000 Error syncing pod
Normal BackOff 1s (x44 over 10m) kubelet, dc9ebacs9000 Back-off pulling image "tlk8s.azurecr.io/devicecloudwebapi:v1"
然后我尝试检查失败的pod:
PS C:\users\<me>\source\repos\DeviceCloud\DeviceCloud\1- Presentation\DeviceCloud.Web.API> kubectl logs tl-api-3466491809-vd5kg
Error from server (BadRequest): container "tl-api" in pod "tl-api-3466491809-vd5kg" is waiting to start: trying and failing to pull image
您的问题是容器映像
tlk8s.azurecr.io/devicecloudwebapi:v1
位于私有容器注册表中。请参见以下命令底部的事件:
$ kubectl describe po -l=app=tl-api
Kubernetes官方文件描述了如何解决该问题,请参见:
- 创建机密
kubectl创建机密docker注册表
- 在部署中,在
键下使用它spec.imagePullSecrets