Size: a a a

Kubernetes — русскоговорящее сообщество

2020 November 30

I

Igor in Kubernetes — русскоговорящее сообщество
Подскажите, а в калико по дефолту deny all между подами?
источник

SW

Smith Wesson in Kubernetes — русскоговорящее сообщество
Igor
Подскажите, а в калико по дефолту deny all между подами?
allow
источник

IB

Igor BeLL in Kubernetes — русскоговорящее сообщество
Всем привет. Комрады есть вопрос, при установке nginx controller  с HELM
helm install nginx —namespace kube-system nginx-stable/nginx-ingress
—set controller.healthStatus=true
—set controller.healthStatusURI=/nginx-health
—set controller.reportIngressStatus.enableLeaderElection=false
он работает только на 1-й ноде в aws она имеет статус healthy, остальные unhealthy, я устанавливаю —set controller.reportIngressStatus.enableLeaderElection=false, но все равно работает только на 1-й ноде. Подскажите куда копать?
источник

SS

Sergey Shevchenko in Kubernetes — русскоговорящее сообщество
Так вроде как он так и должен нет?
источник

IB

Igor BeLL in Kubernetes — русскоговорящее сообщество
Sergey Shevchenko
Так вроде как он так и должен нет?
не
источник

IB

Igor BeLL in Kubernetes — русскоговорящее сообщество
источник

AK

Andrey Klimentyev in Kubernetes — русскоговорящее сообщество
Всё абсолютно корректно. Выкати поды на остальные ноды, они начнут health-check проходить.
источник

A

Alexey Yamschikov in Kubernetes — русскоговорящее сообщество
coredns ест 500-700 Метров - это нормально?
источник

ВК

Виктор Коптев... in Kubernetes — русскоговорящее сообщество
Всем привет.
источник

ВК

Виктор Коптев... in Kubernetes — русскоговорящее сообщество
у кого-то есть опыт увеличения лимитов на количество запущенных подов пер нода?
источник

MS

Maxim Savchenko in Kubernetes — русскоговорящее сообщество
Alexey Yamschikov
coredns ест 500-700 Метров - это нормально?
1. Покажи конфиг coredns ( k -n kube-system describe configmaps coredns)
2. Покажи что в /etc/resolv.conf на хосте, на котором кубер запущен.
источник

ВК

Виктор Коптев... in Kubernetes — русскоговорящее сообщество
в kubelet есть ручка maxPods, я ее выставил в значение по выше, но это не помогло, все равно упираюсь в лимит 110 подов.
источник

MS

Maxim Savchenko in Kubernetes — русскоговорящее сообщество
Виктор Коптев
у кого-то есть опыт увеличения лимитов на количество запущенных подов пер нода?
есть,  если кубер ставили через rke, то можно задать в конфиге для
  kubelet:
   image: ""
   extra_args:
     max-pods: 255

ну и прогнать rke
а так, то да, в kubelet есть параметр
--max-pods=250

нужно его передать как аргумент при запуске kubelet
источник

E

Eugene in Kubernetes — русскоговорящее сообщество
Коллеги, добрый день!
Как реализовать строгое совпадение пути/запроса в Nginx-ingress-контроллере
Например, в классическом nginx это реализовывается такими локейшенами
      location = /trade_ws {
         proxy_pass http://service-2;    
         

     location ~ ^/(orders|trade) {
         proxy_pass http://service-1;
     }


Использую также регулярные выражения через аннотацию
nginx.ingress.kubernetes.io/use-regex: true

Конфигурация  Ingess имеет вид
# kubectl describe ing ingress-service-1
Name:             ingress-service-1
Namespace:        default
Address:          10.97.2.244
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
 Host                  Path  Backends
 ----                  ----  --------
 stage2.mydomain.com  
                       /(orders|trade)  service-1:80 (10.20.23.54:9999)
                       /trade_ws$ service-2:80 (10.20.146.33:80,10.20.16.138:80,10.20.23.80:80)
Annotations:            meta.helm.sh/release-name: service-1
                       meta.helm.sh/release-namespace: default
                       nginx.ingress.kubernetes.io/use-regex: true
Events:                 <none>

В результате nginx-ingress генерирует свой конфиг (файл /etc/nginx/nginx.conf)
в котором локейшен
/trade_ws идет ПОСЛЕ локейшена /(orders|trade),
И самое важное, что нет никаого строго совпадения( "=", как это присутствует в классическом nginx)
location ~* "^/(orders|trade)"
location ~* "^/trade_ws$"

что соотвественно приводит к тому, что все запросы
наичинающиеся на /trade (независимо от того, что идет дальше) обрабатываются первым совпадающим локейшеном/путем с регулярными выражениями(это штатная работа nginx), поэтому ожидаемо запрос /trade_ws не достигает второго локейшена, а обрабатывается первым

Использовать регулярку через анотацию достаточно лишь в одном ингрессе для домена
Тогда nginx-ingress-контроллер автоматически будет использовать регулярку для всех остальных
локейшенов/путей для этого домена

When this annotation is set to true, the case insensitive regular expression location modifier will be enforced on ALL paths for a given host regardless of what Ingress they are defined on.

Прочтение официальной доки от nginx-ingress не позволило мне найти решение моего вопроса
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
источник

ВК

Виктор Коптев... in Kubernetes — русскоговорящее сообщество
в общем похоже на багу.
--max-pods=250
- deprecated
поэтому я задавал ее в кубелет конфиге (тот что yaml)
и там она нихера не работает.
а когда задаешь аргументом запуска, тогда ругается что deprecated но при этом работает.
источник

ВК

Виктор Коптев... in Kubernetes — русскоговорящее сообщество
Maxim Savchenko
есть,  если кубер ставили через rke, то можно задать в конфиге для
  kubelet:
   image: ""
   extra_args:
     max-pods: 255

ну и прогнать rke
а так, то да, в kubelet есть параметр
--max-pods=250

нужно его передать как аргумент при запуске kubelet
спасибо за помощь!
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Eugene
Коллеги, добрый день!
Как реализовать строгое совпадение пути/запроса в Nginx-ingress-контроллере
Например, в классическом nginx это реализовывается такими локейшенами
      location = /trade_ws {
         proxy_pass http://service-2;    
         

     location ~ ^/(orders|trade) {
         proxy_pass http://service-1;
     }


Использую также регулярные выражения через аннотацию
nginx.ingress.kubernetes.io/use-regex: true

Конфигурация  Ingess имеет вид
# kubectl describe ing ingress-service-1
Name:             ingress-service-1
Namespace:        default
Address:          10.97.2.244
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
 Host                  Path  Backends
 ----                  ----  --------
 stage2.mydomain.com  
                       /(orders|trade)  service-1:80 (10.20.23.54:9999)
                       /trade_ws$ service-2:80 (10.20.146.33:80,10.20.16.138:80,10.20.23.80:80)
Annotations:            meta.helm.sh/release-name: service-1
                       meta.helm.sh/release-namespace: default
                       nginx.ingress.kubernetes.io/use-regex: true
Events:                 <none>

В результате nginx-ingress генерирует свой конфиг (файл /etc/nginx/nginx.conf)
в котором локейшен
/trade_ws идет ПОСЛЕ локейшена /(orders|trade),
И самое важное, что нет никаого строго совпадения( "=", как это присутствует в классическом nginx)
location ~* "^/(orders|trade)"
location ~* "^/trade_ws$"

что соотвественно приводит к тому, что все запросы
наичинающиеся на /trade (независимо от того, что идет дальше) обрабатываются первым совпадающим локейшеном/путем с регулярными выражениями(это штатная работа nginx), поэтому ожидаемо запрос /trade_ws не достигает второго локейшена, а обрабатывается первым

Использовать регулярку через анотацию достаточно лишь в одном ингрессе для домена
Тогда nginx-ingress-контроллер автоматически будет использовать регулярку для всех остальных
локейшенов/путей для этого домена

When this annotation is set to true, the case insensitive regular expression location modifier will be enforced on ALL paths for a given host regardless of what Ingress they are defined on.

Прочтение официальной доки от nginx-ingress не позволило мне найти решение моего вопроса
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
в новых весриях API ingress, появился ingress.spec.rules.http.paths.pathType
Может быть Exact или Prefix. Но реализация на совести контроллера
источник

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
Eugene
Коллеги, добрый день!
Как реализовать строгое совпадение пути/запроса в Nginx-ingress-контроллере
Например, в классическом nginx это реализовывается такими локейшенами
      location = /trade_ws {
         proxy_pass http://service-2;    
         

     location ~ ^/(orders|trade) {
         proxy_pass http://service-1;
     }


Использую также регулярные выражения через аннотацию
nginx.ingress.kubernetes.io/use-regex: true

Конфигурация  Ingess имеет вид
# kubectl describe ing ingress-service-1
Name:             ingress-service-1
Namespace:        default
Address:          10.97.2.244
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
 Host                  Path  Backends
 ----                  ----  --------
 stage2.mydomain.com  
                       /(orders|trade)  service-1:80 (10.20.23.54:9999)
                       /trade_ws$ service-2:80 (10.20.146.33:80,10.20.16.138:80,10.20.23.80:80)
Annotations:            meta.helm.sh/release-name: service-1
                       meta.helm.sh/release-namespace: default
                       nginx.ingress.kubernetes.io/use-regex: true
Events:                 <none>

В результате nginx-ingress генерирует свой конфиг (файл /etc/nginx/nginx.conf)
в котором локейшен
/trade_ws идет ПОСЛЕ локейшена /(orders|trade),
И самое важное, что нет никаого строго совпадения( "=", как это присутствует в классическом nginx)
location ~* "^/(orders|trade)"
location ~* "^/trade_ws$"

что соотвественно приводит к тому, что все запросы
наичинающиеся на /trade (независимо от того, что идет дальше) обрабатываются первым совпадающим локейшеном/путем с регулярными выражениями(это штатная работа nginx), поэтому ожидаемо запрос /trade_ws не достигает второго локейшена, а обрабатывается первым

Использовать регулярку через анотацию достаточно лишь в одном ингрессе для домена
Тогда nginx-ingress-контроллер автоматически будет использовать регулярку для всех остальных
локейшенов/путей для этого домена

When this annotation is set to true, the case insensitive regular expression location modifier will be enforced on ALL paths for a given host regardless of what Ingress they are defined on.

Прочтение официальной доки от nginx-ingress не позволило мне найти решение моего вопроса
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
Ну дык поставть в регулярку !trade_ws
источник

AL

Aleksey Lazarev in Kubernetes — русскоговорящее сообщество
Но вообще Дмитрий верно написал -> в 1.18 добавили pathType для ингреса
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Eugene
Коллеги, добрый день!
Как реализовать строгое совпадение пути/запроса в Nginx-ingress-контроллере
Например, в классическом nginx это реализовывается такими локейшенами
      location = /trade_ws {
         proxy_pass http://service-2;    
         

     location ~ ^/(orders|trade) {
         proxy_pass http://service-1;
     }


Использую также регулярные выражения через аннотацию
nginx.ingress.kubernetes.io/use-regex: true

Конфигурация  Ingess имеет вид
# kubectl describe ing ingress-service-1
Name:             ingress-service-1
Namespace:        default
Address:          10.97.2.244
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
 Host                  Path  Backends
 ----                  ----  --------
 stage2.mydomain.com  
                       /(orders|trade)  service-1:80 (10.20.23.54:9999)
                       /trade_ws$ service-2:80 (10.20.146.33:80,10.20.16.138:80,10.20.23.80:80)
Annotations:            meta.helm.sh/release-name: service-1
                       meta.helm.sh/release-namespace: default
                       nginx.ingress.kubernetes.io/use-regex: true
Events:                 <none>

В результате nginx-ingress генерирует свой конфиг (файл /etc/nginx/nginx.conf)
в котором локейшен
/trade_ws идет ПОСЛЕ локейшена /(orders|trade),
И самое важное, что нет никаого строго совпадения( "=", как это присутствует в классическом nginx)
location ~* "^/(orders|trade)"
location ~* "^/trade_ws$"

что соотвественно приводит к тому, что все запросы
наичинающиеся на /trade (независимо от того, что идет дальше) обрабатываются первым совпадающим локейшеном/путем с регулярными выражениями(это штатная работа nginx), поэтому ожидаемо запрос /trade_ws не достигает второго локейшена, а обрабатывается первым

Использовать регулярку через анотацию достаточно лишь в одном ингрессе для домена
Тогда nginx-ingress-контроллер автоматически будет использовать регулярку для всех остальных
локейшенов/путей для этого домена

When this annotation is set to true, the case insensitive regular expression location modifier will be enforced on ALL paths for a given host regardless of what Ingress they are defined on.

Прочтение официальной доки от nginx-ingress не позволило мне найти решение моего вопроса
https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/
ну а текущими средствами, ты можешь регулярку ^/(orders|trade) сделать строже
источник