стручок кубернетес застрял в ожидании - PullRequest
0 голосов
/ 21 марта 2020

Когда модуль застревает в состоянии ожидания, что я могу сделать, чтобы выяснить, почему он ждет?

Например, у меня есть развертывание на AKS, которое использует ACI.

Когда Я развернул файл yaml, ряд модулей застрял в состоянии ожидания. Запуск kubectl describe pod selenium121157nodechrome-7bf598579f-kqfqs возвращает;

State:          Waiting
  Reason:       Waiting
Ready:          False
Restart Count:  0

kubectl logs selenium121157nodechrome-7bf598579f-kqfqs ничего не возвращает.

Как узнать, что такое модуль, ожидающий модуля?

Вот развертывание yaml;

apiVersion: apps/v1
kind: Deployment
metadata:
  name: aci-helloworld2
spec:
  replicas: 20
  selector:
    matchLabels:
      app: aci-helloworld2
  template:
    metadata:
      labels:
        app: aci-helloworld2
    spec:
      containers:
      - name: aci-helloworld
        image: microsoft/aci-helloworld
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/role: agent
        beta.kubernetes.io/os: linux
        type: virtual-kubelet
      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Exists
      - key: azure.com/aci
        effect: NoSchedule

Вот вывод describe pod, который ждал 5 минут;

matt@Azure:~/2020$ kubectl describe pod aci-helloworld2-86b8d7866d-b9hgc
Name:           aci-helloworld2-86b8d7866d-b9hgc
Namespace:      default
Priority:       0
Node:           virtual-node-aci-linux/
Labels:         app=aci-helloworld2
                pod-template-hash=86b8d7866d
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/aci-helloworld2-86b8d7866d
Containers:
  aci-helloworld:
    Container ID:   aci://95919def19c28c2a51a806928030d84df4bc6b60656d026d19d0fd5e26e3cd86
    Image:          microsoft/aci-helloworld
    Image ID:
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       Waiting
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-hqrj8 (ro)
Volumes:
  default-token-hqrj8:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-hqrj8
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  beta.kubernetes.io/os=linux
                 kubernetes.io/role=agent
                 type=virtual-kubelet
Tolerations:     azure.com/aci:NoSchedule
                 node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
                 virtual-kubelet.io/provider
Events:
  Type    Reason     Age        From               Message
  ----    ------     ----       ----               -------
  Normal  Scheduled  <unknown>  default-scheduler  Successfully assigned default/aci-helloworld2-86b8d7866d-b9hgc to virtual-node-aci-linux

1 Ответ

0 голосов
/ 23 марта 2020

На основании официальной документации , если ваш pod находится в состоянии waiting, это означает, что он был запланирован на узле, но не может работать на этом компьютере с изображением, указанным как самая распространенная проблема. Вы можете попробовать запустить свой образ вручную с помощью docker pull и docker run и исключить проблемы с изображением.

Информация от kubectl describe <pod-name> должна дать вам некоторую информацию, особенно раздел о событиях внизу , Вот пример того, как они могут выглядеть:

Events:
 Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  <unknown>            default-scheduler  Successfully assigned default/testpod to cafe
  Normal   BackOff    50s (x6 over 2m16s)  kubelet, cafe      Back-off pulling image "busybox"
  Normal   Pulling    37s (x4 over 2m17s)  kubelet, cafe      Pulling image "busybox"

Это также может быть проблемой с вашими NodeSelector и Tolerations, но, опять же, это будет отображаться в ваших событиях, когда вы описываете свой модуль.

Дайте мне знать, если это поможет и каковы ваши выводы из describe pod.

...