Bug 50058 - Некоторые pod'ы на master-ноде остаются в состоянии Init:0/1, Pending или ContainerCreating
Summary: Некоторые pod'ы на master-ноде остаются в состоянии Init:0/1, Pending или Con...
Status: CLOSED WORKSFORME
Alias: None
Product: Sisyphus
Classification: Development
Component: podsec (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: kaf@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-17 16:05 MSK by Artem Varaksa
Modified: 2024-05-06 21:17 MSK (History)
4 users (show)

See Also:


Attachments
Вывод kubectl describe для неработающих pod'ов (12.43 KB, text/plain)
2024-04-24 12:53 MSK, Artem Varaksa
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2024-04-17 16:05:57 MSK
Шаги
====

Настройка haproxy:
# hostnamectl set-hostname podsec-haproxy && reboot
# apt-get install -y haproxy
/etc/haproxy/haproxy.cfg:
frontend main
    bind *:8443
    mode tcp
    option tcplog
    default_backend apiserver

backend apiserver
    option httpchk GET /healthz
    http-check expect status 200
    mode tcp
    option ssl-hello-chk
    balance     roundrobin
        server master01 <master ip>:6443 check

# systemctl enable --now haproxy && sleep 5; systemctl status haproxy

Настройка master:
# uname -r | grep un-def >/dev/null || update-kernel -t un-def -y
# sed -i '/swap/d' /etc/fstab
# hostnamectl set-hostname podsec-master
# reboot
# echo "<IP> podsec-haproxy" >> /etc/hosts

# apt-get install -y podsec-k8s podsec-inotify
# export PATH=/usr/libexec/podsec/u7s/bin/:$PATH && which kubeadm
# U7S_PLATFORM=k8s-PLATFORM U7S_KUBEVERSION=v1.26.11 U7S_SETAVAILABLEIMAGES=yes kubeadm init --apiserver-advertise-address $(hostname -i) --control-plane-endpoint $(cat /etc/hosts | grep podsec-haproxy | cut -d' ' -f1):8443

где PLATFORM - p10 / sisyphus

Фактический результат
=====================

Команда завершается успешно, и даже возможно последующее подключение control-plane и worker-нод. Но некоторые pod'ы не запускаются:

> NAMESPACE      NAME                                              READY   STATUS              RESTARTS   AGE
> kube-flannel   pod/kube-flannel-ds-7dbzq                         0/1     Init:0/1            0          33m
> kube-flannel   pod/kube-flannel-ds-825d7                         1/1     Running             0          16s
> kube-flannel   pod/kube-flannel-ds-tcqgq                         1/1     Running             1          3m56s
> kube-system    pod/coredns-5d74d44657-7q9xn                      0/1     Pending             0          33m
> kube-system    pod/coredns-5d74d44657-945zd                      0/1     ContainerCreating   0          33m
> kube-system    pod/etcd-podsec-controlplane                      1/1     Running             1          3m46s
> kube-system    pod/etcd-podsec-master                            1/1     Running             1          33m
> kube-system    pod/kube-apiserver-podsec-controlplane            1/1     Running             0          3m25s
> kube-system    pod/kube-apiserver-podsec-master                  1/1     Running             0          33m
> kube-system    pod/kube-controller-manager-podsec-controlplane   1/1     Running             1          3m55s
> kube-system    pod/kube-controller-manager-podsec-master         1/1     Running             1          33m
> kube-system    pod/kube-proxy-bhqqj                              1/1     Running             0          16s
> kube-system    pod/kube-proxy-hflbv                              1/1     Running             1          3m56s
> kube-system    pod/kube-proxy-mr2bj                              0/1     ContainerCreating   0          33m
> kube-system    pod/kube-scheduler-podsec-controlplane            1/1     Running             1          3m55s
> kube-system    pod/kube-scheduler-podsec-master                  1/1     Running             1          33m

Вследствие этого команды вида:

# curl -s https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.0/deploy/static/provider/baremetal/deploy.yaml -o ingress-nginx-deploy.yaml
# sed -i 's|targetPort: http$|targetPort: http\n\ \ \ \ nodePort: 31000|' ingress-nginx-deploy.yaml
# kubectl apply -f ingress-nginx-deploy.yaml

затем просто зависают на kubectl apply, после чего kubectl зависает на любой команде.

Ожидаемый результат
===================

Успешная инициализация master-ноды кластера.

Воспроизводимость
=================

Воспроизводится на виртуальной машине:

[sisyphus] ALT Server 10.2 x86_64
podsec-1.0.10-alt6.noarch
kubernetes1.26-kubeadm-1.26.14-alt1.1.x86_64
kubernetes1.26-kubelet-1.26.14-alt1.1.x86_64
kubernetes1.26-crio-1.26.14-alt1.1.noarch
kubernetes1.26-common-1.26.14-alt1.1.noarch
kubernetes1.26-node-1.26.14-alt1.1.x86_64
kubernetes1.26-client-1.26.14-alt1.1.x86_64

Не воспроизводится на виртуальной машине:

[p10] ALT Server 10.2 x86_64
podsec-k8s-1.0.8-alt1.noarch
kubernetes1.26-kubelet-1.26.14-alt1.x86_64
kubernetes1.26-crio-1.26.14-alt1.noarch
kubernetes1.26-common-1.26.14-alt1.noarch
kubernetes1.26-node-1.26.14-alt1.x86_64
kubernetes1.26-master-1.26.14-alt1.x86_64
kubernetes1.26-kubeadm-1.26.14-alt1.x86_64
kubernetes1.26-client-1.26.14-alt1.x86_64
Comment 1 ALexey Kostarev 2024-04-23 16:56:44 MSK
> Фактический результат
> =====================
> 
> Команда завершается успешно, и даже возможно последующее подключение
> control-plane и worker-нод. Но некоторые pod'ы не запускаются:
> 
> > NAMESPACE      NAME                                              READY   STATUS              RESTARTS   AGE
> > kube-flannel   pod/kube-flannel-ds-7dbzq                         0/1     Init:0/1            0          33m
> > kube-flannel   pod/kube-flannel-ds-825d7                         1/1     Running             0          16s
> > kube-flannel   pod/kube-flannel-ds-tcqgq                         1/1     Running             1          3m56s
> > kube-system    pod/coredns-5d74d44657-7q9xn                      0/1     Pending             0          33m
> > kube-system    pod/coredns-5d74d44657-945zd                      0/1     ContainerCreating   0          33m
> > kube-system    pod/etcd-podsec-controlplane                      1/1     Running             1          3m46s
> > kube-system    pod/etcd-podsec-master                            1/1     Running             1          33m
> > kube-system    pod/kube-apiserver-podsec-controlplane            1/1     Running             0          3m25s
> > kube-system    pod/kube-apiserver-podsec-master                  1/1     Running             0          33m
> > kube-system    pod/kube-controller-manager-podsec-controlplane   1/1     Running             1          3m55s
> > kube-system    pod/kube-controller-manager-podsec-master         1/1     Running             1          33m
> > kube-system    pod/kube-proxy-bhqqj                              1/1     Running             0          16s
> > kube-system    pod/kube-proxy-hflbv                              1/1     Running             1          3m56s
> > kube-system    pod/kube-proxy-mr2bj                              0/1     ContainerCreating   0          33m
> > kube-system    pod/kube-scheduler-podsec-controlplane            1/1     Running             1          3m55s
> > kube-system    pod/kube-scheduler-podsec-master                  1/1     Running             1          33m
> 
Артем а есть возможность привести результат выполнения команд

$ kubectl -n flannel describe pod/... 
$ kubectl -n flannel logs pod/...

для всех POD'ов в состоянии 0/1
?
Comment 2 Artem Varaksa 2024-04-24 12:53:26 MSK
Created attachment 15959 [details]
Вывод kubectl describe для неработающих pod'ов

Приложил вывод describe при следующем состоянии:

> # kubectl get pods -A
> NAMESPACE      NAME                                    READY   STATUS              RESTARTS   AGE
> kube-flannel   kube-flannel-ds-p7mqt                   0/1     Init:0/1            0          9m8s
> kube-system    coredns-74b4f8d87d-hprkh                0/1     ContainerCreating   0          9m8s
> kube-system    coredns-74b4f8d87d-k4sj4                0/1     Pending             0          9m8s
> kube-system    etcd-podsec-master                      1/1     Running             1          9m26s
> kube-system    kube-apiserver-podsec-master            1/1     Running             0          9m35s
> kube-system    kube-controller-manager-podsec-master   1/1     Running             1          9m42s
> kube-system    kube-proxy-9jbtj                        0/1     ContainerCreating   0          9m8s
> kube-system    kube-scheduler-podsec-master            1/1     Running             1          9m44s

> # kubectl -n kube-flannel describe pod/kube-flannel-ds-p7mqt >> describe.txt
> # kubectl -n kube-system describe pod/coredns-74b4f8d87d-hprkh >> describe.txt
> # kubectl -n kube-system describe pod/coredns-74b4f8d87d-k4sj4 >> describe.txt
> # kubectl -n kube-system describe pod/kube-proxy-9jbtj  >> describe.txt

kubectl logs невозможно использовать для любых pod'ов, вероятно это связано с тем, что pod/kube-proxy не работает.

# kubectl logs -n kube-system pod/kube-controller-manager-podsec-master
Error from server (InternalError): Internal error occurred: Authorization error (user=kube-apiserver-kubelet-client, verb=get, resource=nodes, subresource=proxy)

В p10 работают все pod'ы и доступны логи.
Comment 3 Artem Varaksa 2024-04-24 15:35:00 MSK
(Ответ для Artem Varaksa на комментарий #2)
> В p10 работают все pod'ы и доступны логи.

В p10, похоже, используется 1.26.3 вне зависимости от U7S_KUBEVERSION.

Проверил на sisyphus с U7S_KUBEVERSION=v1.26.3, ошибка также воспроизводится.
Comment 4 ALexey Kostarev 2024-04-25 13:29:56 MSK
А вообще есть потенциальная возможность мне войти в эти VM?

Очень трудно и долго вытаскивать информацию по шагам :-(

И да - может в telegram списаться?
Comment 5 ALexey Kostarev 2024-04-25 13:42:18 MSK
(Ответ для Artem Varaksa на комментарий #2)
> Создано вложение 15959 [details] [подробности]
> Вывод kubectl describe для неработающих pod'ов
> 
> Приложил вывод describe при следующем состоянии:
> 
> > # kubectl get pods -A
> > NAMESPACE      NAME                                    READY   STATUS              RESTARTS   AGE
> > kube-flannel   kube-flannel-ds-p7mqt                   0/1     Init:0/1            0          9m8s
> > kube-system    coredns-74b4f8d87d-hprkh                0/1     ContainerCreating   0          9m8s
> > kube-system    coredns-74b4f8d87d-k4sj4                0/1     Pending             0          9m8s
> > kube-system    etcd-podsec-master                      1/1     Running             1          9m26s
> > kube-system    kube-apiserver-podsec-master            1/1     Running             0          9m35s
> > kube-system    kube-controller-manager-podsec-master   1/1     Running             1          9m42s
> > kube-system    kube-proxy-9jbtj                        0/1     ContainerCreating   0          9m8s
> > kube-system    kube-scheduler-podsec-master            1/1     Running             1          9m44s
> 
> > # kubectl -n kube-flannel describe pod/kube-flannel-ds-p7mqt >> describe.txt
> > # kubectl -n kube-system describe pod/coredns-74b4f8d87d-hprkh >> describe.txt
> > # kubectl -n kube-system describe pod/coredns-74b4f8d87d-k4sj4 >> describe.txt
> > # kubectl -n kube-system describe pod/kube-proxy-9jbtj  >> describe.txt
> 
> kubectl logs невозможно использовать для любых pod'ов, вероятно это связано
> с тем, что pod/kube-proxy не работает.
> 
> # kubectl logs -n kube-system pod/kube-controller-manager-podsec-master
> Error from server (InternalError): Internal error occurred: Authorization
> error (user=kube-apiserver-kubelet-client, verb=get, resource=nodes,
> subresource=proxy)
> 

1.Надо посмотреть на наком узле неработающие POD'ы
# kubectl get pods -A -o wide

2. Зайти туда в root через ssh

3. Зайти в пользователя u7s-admin

# machinectl shell u7s-admin@ /bin/bash

4. Войти в namespace
$ nsenter_u7s 
[INFO] Entering RootlessKit namespaces: OK
[root@host-70 ~]# 

5. Посмотреть список POD'ов
# crictl ps 
CONTAINER           IMAGE                                                              CREATED             STATE               NAME                      ATTEMPT             POD ID              POD
80b164bf31738       95174ae115a72b6b8b2ca31dfe8dc2ad8194dd4820e55796627602c080e91845   28 hours ago        Running             kube-flannel              0                   4a1049e2ced4a       kube-flannel-ds-qwcfq
...
6. Посмотреть логи POD'а

# crictl  logs 80b164bf31738
....

и бросить их мне
Comment 6 ALexey Kostarev 2024-04-25 13:48:51 MSK
(Ответ для ALexey Kostarev на комментарий #5)
> (Ответ для Artem Varaksa на комментарий #2)
> > Создано вложение 15959 [details] [подробности]
> > Вывод kubectl describe для неработающих pod'ов
> > 
> > Приложил вывод describe при следующем состоянии:
> > 
> > > # kubectl get pods -A
> > > NAMESPACE      NAME                                    READY   STATUS              RESTARTS   AGE
> > > kube-flannel   kube-flannel-ds-p7mqt                   0/1     Init:0/1            0          9m8s
> > > kube-system    coredns-74b4f8d87d-hprkh                0/1     ContainerCreating   0          9m8s
> > > kube-system    coredns-74b4f8d87d-k4sj4                0/1     Pending             0          9m8s
> > > kube-system    etcd-podsec-master                      1/1     Running             1          9m26s
> > > kube-system    kube-apiserver-podsec-master            1/1     Running             0          9m35s
> > > kube-system    kube-controller-manager-podsec-master   1/1     Running             1          9m42s
> > > kube-system    kube-proxy-9jbtj                        0/1     ContainerCreating   0          9m8s
> > > kube-system    kube-scheduler-podsec-master            1/1     Running             1          9m44s
> > 
> > > # kubectl -n kube-flannel describe pod/kube-flannel-ds-p7mqt >> describe.txt
> > > # kubectl -n kube-system describe pod/coredns-74b4f8d87d-hprkh >> describe.txt
> > > # kubectl -n kube-system describe pod/coredns-74b4f8d87d-k4sj4 >> describe.txt
> > > # kubectl -n kube-system describe pod/kube-proxy-9jbtj  >> describe.txt
> > 
> > kubectl logs невозможно использовать для любых pod'ов, вероятно это связано
> > с тем, что pod/kube-proxy не работает.
> > 
> > # kubectl logs -n kube-system pod/kube-controller-manager-podsec-master
> > Error from server (InternalError): Internal error occurred: Authorization
> > error (user=kube-apiserver-kubelet-client, verb=get, resource=nodes,
> > subresource=proxy)
> > 
> 
> 1.Надо посмотреть на наком узле неработающие POD'ы
> # kubectl get pods -A -o wide
> 
> 2. Зайти туда в root через ssh
> 
> 3. Зайти в пользователя u7s-admin
> 
> # machinectl shell u7s-admin@ /bin/bash
> 
> 4. Войти в namespace
> $ nsenter_u7s 
> [INFO] Entering RootlessKit namespaces: OK
> [root@host-70 ~]# 
> 
> 5. Посмотреть список POD'ов
> # crictl ps 
> CONTAINER           IMAGE                                                   
> CREATED             STATE               NAME                      ATTEMPT   
> POD ID              POD
> 80b164bf31738      
> 95174ae115a72b6b8b2ca31dfe8dc2ad8194dd4820e55796627602c080e91845   28 hours
> ago        Running             kube-flannel              0                  
> 4a1049e2ced4a       kube-flannel-ds-qwcfq
> ...
> 6. Посмотреть логи POD'а
> 
> # crictl  logs 80b164bf31738
> ....
> 
> и бросить их мне

Можно даже лучше
Те же шаги, но вместо 
# crirtl ps
# criatl logs

1. зайти в каталог
# cd /var/log
Там все kuber-логи
# ls 
containers  crio  pods

2. Заархивировать их
# tar cvzf /tmp/logs.tgz  

3. Бросить logs.tgz  мне
Comment 7 Alexander Makeenkov 2024-05-03 12:17:05 MSK
Версия 1.0.10-alt7 - проблема не воспроизводится. Но нужно обязательно поменять адреса подсети в файле /etc/podsec/u7s/config/cni_net.d/50-bridge.conf, если они пересекаются с текущей подсетью.
Comment 8 ALexey Kostarev 2024-05-03 19:23:25 MSK
(Ответ для Alexander Makeenkov на комментарий #7)
> Версия 1.0.10-alt7 - проблема не воспроизводится. Но нужно обязательно
> поменять адреса подсети в файле
> /etc/podsec/u7s/config/cni_net.d/50-bridge.conf, если они пересекаются с
> текущей подсетью.

Я в ближайшее время планирую выпустить очередную версию
1.0.10-alt8

В ней исправлены ряд недоработок, что я обнаружил во время тестирования

Могу в эту версия добавить предложенный Вами функционал
Но мне нужна площадка для тестирования с локальными адресами 10.88.8.0/21

Вы можете мне поднять одну-две VM с этими адресами для тестирования функционала?
Comment 9 ALexey Kostarev 2024-05-06 21:17:44 MSK
(Ответ для Alexander Makeenkov на комментарий #7)
> Версия 1.0.10-alt7 - проблема не воспроизводится. Но нужно обязательно
> поменять адреса подсети в файле
> /etc/podsec/u7s/config/cni_net.d/50-bridge.conf, если они пересекаются с
> текущей подсетью.

Я в ближайшее время планирую выпустить очередную версию
1.0.10-alt8

В ней исправлены ряд недоработок, что я обнаружил во время тестирования

Могу в эту версия добавить предложенный Вами функционал
Но мне нужна площадка для тестирования с локальными адресами 10.88.8.0/21

Вы можете мне поднять одну-две VM с этими адресами для тестирования функционала?