Vadim
crictl - это для интерфейса (CRI), crio - одна из реализаций этого интерфейса
Anton
а зачем вообще полная совместимость с докером? образы главное совместимы и ладно. Остальное, чем меньше и строже, тем лучше
Sergey
Sergey
минимально и все под нужды кубера
Vadim
соместимость с докером оставят, на некоторое время, в потом и на нормальный формат и процесс сборки перейдут
Sergey
и все же изначальный вопрос актуален. кто-то уже перепрыгнул на cri-o в проде?
Maksim
Pavel
G72K
Vadim
Докер - сукин сын, но он наш ... да, тут надо новую регистри добавить, сейчас придется весь демон перезапустить
G72K
Vadim
insecure в смысле?
и secure тоже. Хотя в докере слово secure лучше писать в кавычках
Vadim
"Как это - проверять имаджи после пулла? sha256 должно хватить всем!"
G72K
G72K
Vadim
А что, не хватает?
https://github.com/moby/moby/issues/9719. tl;dr пока хватает, но почему бы не перейти на нормальный gpg (который позволил бы по-человечески делать мирроры) мне не ясно
G72K
Салтыдык
#whois Инженер в Red Hat, работаю над ansible репозиторием для установки openshift
Andrey
Ребят, а почему после создания ingress, поды под него могут не подниматься?
Andrey
Andrey
Где бы хоть логов глянуть
Салтыдык
describe тоже работает
Andrey
Но в дашборде я его вижу
Салтыдык
по дашборде не гадаю
kubectl get po --namespace kube-system
Andrey
# kubectl get po --namespace kube-system
NAME READY STATUS RESTARTS AGE
calico-node-9fvcq 1/1 Running 0 3d
calico-node-k2bp7 1/1 Running 0 3d
calico-node-w8mlm 1/1 Running 0 3d
default-http-backend-5f497b585f-wlm4t 1/1 Running 0 21m
kube-apiserver-kube01 1/1 Running 0 3d
kube-apiserver-kube02 1/1 Running 0 3d
kube-controller-manager-kube01 1/1 Running 0 3d
kube-controller-manager-kube02 1/1 Running 0 3d
kube-dns-79d99cdcd5-5kxgx 3/3 Running 0 3d
kube-dns-79d99cdcd5-gmkpt 3/3 Running 0 3d
kube-proxy-kube01 1/1 Running 0 3d
kube-proxy-kube02 1/1 Running 0 3d
kube-proxy-kube03 1/1 Running 0 3d
kube-scheduler-kube01 1/1 Running 0 3d
kube-scheduler-kube02 1/1 Running 0 3d
kubedns-autoscaler-5564b5585f-hk9l4 1/1 Running 0 3d
kubernetes-dashboard-6bbb86ffc4-4h4w7 1/1 Running 0 3d
nginx-proxy-kube03 1/1 Running 0 3d
Anton
ну может он в другом нэймспэйсе?
Andrey
кажется разобрался. У меня там node-selector стоял.
Andrey
а нод таких не было
Andrey
убрал селектор, но теперь другая проблема:
I0215 10:04:41.388959 7 launch.go:94] &{NGINX 0.9.0-beta.2 git-7013a52 git@github.com:ixdy/kubernetes-ingress.git}
I0215 10:04:41.388989 7 launch.go:97] Watching for ingress class: nginx
I0215 10:04:41.387575 7 nginx.go:112] starting NGINX process...
I0215 10:04:41.390230 7 launch.go:223] Creating API server client for https://10.233.0.1:443
F0215 10:04:41.418959 7 launch.go:111] no service with name kube-system/default-http-backend found: services "default-http-backend" is forbidden: User "system:serviceaccount:kube-system:default" cannot get services in the namespace "kube-system"
Вроде понятно что прав не хватает. Но где взять правильного юзера и как его прописать?
Vadim
Vadim
если нужно просто чтение сервисов, то view должно хватить
Andrey
если нужно просто чтение сервисов, то view должно хватить
Я правильно понимаю что ошибка:
services "default-http-backend" is forbidden: User "system:serviceaccount:kube-system:default" cannot get services in the namespace "kube-system"
означает что юзеру "default" из неймспейса "kube-system" нужно навесить права?
Andrey
https://github.com/kubernetes/ingress-nginx/blob/master/deploy/README.md#install-with-rbac-roles
Vadim
Andrey
да
Выполнил вот такую команду(копипаста с доков с измененным юзером):
kubectl create rolebinding bob-admin-binding --clusterrole=admin --user=default --namespace=kube-system
т.е я выдал права админа юзеру default из неймспейса kube-system
Andrey
Но чет ошибка такая же при пересоздании ingress controller'a
Andrey
вы как nginx ставили? Есть же внятная документация, берёте и тупо по шагам ставите
Andrey
А можете дать линк на доку где по шагам все?
Я ставил по этой статье с небольшими изменениями относительно того что приложение у меня это кеберовский дашборд и нет отдельных серверов для роутинга: https://dev-ops-notes.ru/kubernetes/kubernetes-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-ingress/
Andrey
Vadim
дефолтный сервисаккаунт в kube-system не может читать сервисы в том же неймспейсе - и даже после добавления ему view? Тут что-то совсем сломалось
Maksim
𝚔𝚟𝚊𝚙𝚜
Народ ,а есть какой-нибудь best practices для сбора логов? - настроил сервисы писать в /dev/stdout и /dev/stderr, через
kubectl logs <pod_name> -c <container_name>все работает прекрассно, но есть ли какая-нибудь тулза которая через kubernetes-api будет подключаться и сохранять все это в какую-нибудь бд, и выводить через красивую веб-морду?
Dmitrii
fluentd или filebeat и собирать с диска в эластик.
Vadim
𝚔𝚟𝚊𝚙𝚜
Да и что на счет ротации, я правильно понимаю что docker пишет все память без ротации и если логов будет много оно здохнет?
Vadim
пишет куда скажут - дефолтно вроде в json-file
𝚔𝚟𝚊𝚙𝚜
а что на счет ротации?
Vadim
json-file можно по размеру ограничить, дефолно емнип 10 мб
Vadim
но лучше конечно писать в systemd/rsyslog
Vadim
https://docs.docker.com/config/containers/logging/configure/#configure-the-default-logging-driver
𝚔𝚟𝚊𝚙𝚜
Хочется что бы и kubectl logs и морда показывали одно и тоже
Dmitrii
Сделай ls /var/lib/docker/containers/*/*.log - увидишь логи от контейнеров на хосте
Dmitrii
Есть еще /var/log/containers/ - там симлинки лежат
𝚔𝚟𝚊𝚙𝚜
О, спасибо, добрый человек)
Denis
Denis
по сравнению с json-file в связке с fluentd
Vadim
если собирать все логи хоста то можно увидеть почему весь демон навернулся, например - отдельно лог контейнера тебе этого не поможет
Vadim
а потом уже фильтровать по контейнеру в эластике
Vadim
подводные камни - дефолтный системд, например, будет тихо дропать логи спамящего контейнера, есть шанс пропустить что-то важное
𝚔𝚟𝚊𝚙𝚜
То есть логика такая вполне приемлима?
- Каждый сервис пусть пишет в stdout/stderr
- А на каждой ноде fluentd настроенный на сбор логов из /var/lib/docker/containers/*/*.log и передает на центральный сервер логов
Vadim
>Каждый сервис пусть пишет в stdout/stderr
и никуда более
𝚔𝚟𝚊𝚙𝚜
отлично!
Andrey
Ребят, создал по доке биндинг:
kubectl create clusterrolebinding myapp-view-binding --clusterrole=admin --serviceaccount=kube-system:default
но при деплое ингресс всеравно ошибка:
E0215 10:50:01.816540 7 reflector.go:199] k8s.io/ingress/core/pkg/ingress/controller/controller.go:1037: Failed to list *api.Node: nodes is forbidden: User "system:serviceaccount:kube-system:default" cannot list nodes at the cluster scope
какие ему еще то права нужны?
Anton
а роль то есть такая?
Anton
она вроде "cluster-admin"
Denis
А CRI-O какие варианты предлагает по логам кстати?
Andrey
Vadim
Denis
в файл?
Denis
или там плагины