在 Azure Kubernetes 群集中部署 Windows 服务



我想在 Azure 群集中部署一个 Windows 服务。我已经创建了部署服务的yaml文件,但是当我运行kubectr get pods时,我得到以下内容,

NAME                                    READY   STATUS             RESTARTS   AGE
windowsservice-deploy-5994764596-jfghj   0/1     ImagePullBackOff   0          39m

我的 yaml 文件如下所示,

apiVersion: apps/v1
kind: Deployment
metadata:
name: windowsservice-deploy
labels:
app: windowsservice
spec:
replicas: 1
template:
metadata:
name: windowsservice
labels:
app: windowsservice
spec:
containers:
- name: windowsservice
image: windowskube.azurecr.io/windowsimage:v1
imagePullPolicy: IfNotPresent
restartPolicy: Always
selector:
matchLabels:
app: windowsservice

---
apiVersion: v1
kind: Service
metadata:
name: windows-service
spec:
selector:
app: windowsservice
ports:
- port: 80
type: LoadBalancer

这是输出 kubectl 描述 pod windowsservice-deploy-5994764596-jfghj

Name:           windowsservice-deploy-5994764596-jfghj
Namespace:      default
Priority:       0
Node:           aks-nodepool1-41533414-vmss000000/10.240.0.4
Start Time:     Mon, 15 Jun 2020 11:24:18 +0100
Labels:         app=windowsservice
pod-template-hash=5994764596
Annotations:    <none>
Status:         Pending
IP:             10.244.0.8
IPs:            <none>
Controlled By:  ReplicaSet/windowsservice-deploy-5994764596
Containers:
workerservice:
Container ID:
Image:          windowskube.azurecr.io/windowsimage:v1
Image ID:
Port:           <none>
Host Port:      <none>
State:          Waiting
Reason:       ImagePullBackOff
Ready:          False
Restart Count:  0
Environment:    <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-zvwh8 (ro)
Conditions:
Type              Status
Initialized       True
Ready             False
ContainersReady   False
PodScheduled      True
Volumes:
default-token-zvwh8:
Type:        Secret (a volume populated by a Secret)
SecretName:  default-token-zvwh8
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
----     ------   ----                   ----                                        -------
Warning  Failed   18m (x330 over 93m)    kubelet, aks-nodepool1-41533414-vmss000000  Error: ImagePullBackOff
Normal   BackOff  3m11s (x395 over 93m)  kubelet, aks-nodepool1-41533414-vmss000000  Back-off pulling image "windowskube.azurecr.io/windowsimage:v1"

这是一个Windows服务,我以前没有部署过,我错过了什么吗?

谢谢

鉴于windowskube.azurecr.io/windowsimage:v1似乎是您的私有 Azure 容器注册表,我认为缺少的部分是为 kubernetes 提供私有注册表的登录凭据。

请参阅:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

如前所述,通过执行kubectl describe pod windowsservice-deploy-5994764596-jfghj并向下滚动到底部以查看Events,您将获得更好的错误消息,描述映像拉取失败的原因。

默认情况下,AKS 群集是使用可运行 Linux 容器的节点池创建的。使用az aks nodepooladd 命令添加一个额外的节点池,该节点池可以与 Linux 节点池一起运行 Windows Server 容器。

az aks nodepool add 
--resource-group myResourceGroup 
--cluster-name myAKSCluster 
--os-type Windows 
--name npwin 
--node-count 1 
--kubernetes-version 1.16.9

请在此处遵循此完整指南

最新更新