Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.04.24 11:11
Оценка:
Всем привет.
Триалю тут "серверный" софт, рассчитанный на развёртывание в kubernetes.
Для эксперимента развернул его в minikube, поставленном на моей Windows 11 Pro.

Миникуб стартован с драйвером = hyperv, т.к. с докер-драйвером там какая-то фатальная проблема, из-за которой поды вообще не видны с локальной машины (https://stackoverflow.com/questions/71714919/unable-to-access-my-minikube-cluster-from-the-browser-because-you-are-using-a).

В таком режиме всё взлетает, я могу заходить на фронтенд сервиса, который развёрнут внутри всей этой матрёшки.

При этом наблюдаю странную проблему — сеть изнутри pod-ов работает очень-очень стрёмно.
То есть если я, допустим, качаю какой-нибудь https://download.visualstudio.microsoft.com/download/pr/39e88c64-efc2-4674-9b47-f2fed0bbd49d/04efb92c455ec620381317a43c480a1b/razorlanguageserver-linux-x64-7.0.0-preview.24161.6.zip на хосте, то всё скачивается за 2-3 секунды.
А когда я делаю изнутри пода wget https://download.visualstudio.microsoft.com/download/pr/39e88c64-efc2-4674-9b47-f2fed0bbd49d/04efb92c455ec620381317a43c480a1b/razorlanguageserver-linux-x64-7.0.0-preview.24161.6.zip, то я вижу 4-5, в лучшем случае 15 килобайт в секунду.
И это в случае везения — в случае невезения я получаю unable to resolve host address ‘download.visualstudio.microsoft.com’.

Нагуглить я не смог по этому поводу ничего — не могу подобрать такое сочетание ключевых слов, чтобы находилось что-то полезное.
Кто может что посоветовать по данному вопросу? Где и какие настройки подкрутить? Куда вообще смотреть?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Minikube on Windows
От: Doom100500 Израиль  
Дата: 04.04.24 06:02
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Всем привет.

S>Триалю тут "серверный" софт, рассчитанный на развёртывание в kubernetes.
S>Для эксперимента развернул его в minikube, поставленном на моей Windows 11 Pro.

S>Миникуб стартован с драйвером = hyperv, т.к. с докер-драйвером там какая-то фатальная проблема, из-за которой поды вообще не видны с локальной машины (https://stackoverflow.com/questions/71714919/unable-to-access-my-minikube-cluster-from-the-browser-because-you-are-using-a).


S>В таком режиме всё взлетает, я могу заходить на фронтенд сервиса, который развёрнут внутри всей этой матрёшки.


S>При этом наблюдаю странную проблему — сеть изнутри pod-ов работает очень-очень стрёмно.

S>То есть если я, допустим, качаю какой-нибудь https://download.visualstudio.microsoft.com/download/pr/39e88c64-efc2-4674-9b47-f2fed0bbd49d/04efb92c455ec620381317a43c480a1b/razorlanguageserver-linux-x64-7.0.0-preview.24161.6.zip на хосте, то всё скачивается за 2-3 секунды.
S>А когда я делаю изнутри пода wget https://download.visualstudio.microsoft.com/download/pr/39e88c64-efc2-4674-9b47-f2fed0bbd49d/04efb92c455ec620381317a43c480a1b/razorlanguageserver-linux-x64-7.0.0-preview.24161.6.zip, то я вижу 4-5, в лучшем случае 15 килобайт в секунду.
S>И это в случае везения — в случае невезения я получаю unable to resolve host address ‘download.visualstudio.microsoft.com’.

S>Нагуглить я не смог по этому поводу ничего — не могу подобрать такое сочетание ключевых слов, чтобы находилось что-то полезное.

S>Кто может что посоветовать по данному вопросу? Где и какие настройки подкрутить? Куда вообще смотреть?

Я на десятке запускал minikube из под wsl2 с драйвером docker. Проблем не было ни внутри ни снаружи.
Спасибо за внимание
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 06:13
Оценка:
Здравствуйте, Doom100500, Вы писали:
S>>Нагуглить я не смог по этому поводу ничего — не могу подобрать такое сочетание ключевых слов, чтобы находилось что-то полезное.
S>>Кто может что посоветовать по данному вопросу? Где и какие настройки подкрутить? Куда вообще смотреть?

D>Я на десятке запускал minikube из под wsl2 с драйвером docker. Проблем не было ни внутри ни снаружи.

А что значит "из-под wsl2"? Запускаем wsl2 терминал — и оттуда поехали?
Можно и попробовать.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Minikube on Windows
От: Doom100500 Израиль  
Дата: 04.04.24 06:24
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Doom100500, Вы писали:

S>>>Нагуглить я не смог по этому поводу ничего — не могу подобрать такое сочетание ключевых слов, чтобы находилось что-то полезное.
S>>>Кто может что посоветовать по данному вопросу? Где и какие настройки подкрутить? Куда вообще смотреть?

D>>Я на десятке запускал minikube из под wsl2 с драйвером docker. Проблем не было ни внутри ни снаружи.

S>А что значит "из-под wsl2"? Запускаем wsl2 терминал — и оттуда поехали?
S>Можно и попробовать.

Ну да, только бинарник minikube туда надо поставить для линукса.
Спасибо за внимание
Re: Minikube on Windows
От: karbofos42 Россия  
Дата: 04.04.24 07:04
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Миникуб стартован с драйвером = hyperv, т.к. с докер-драйвером там какая-то фатальная проблема, из-за которой поды вообще не видны с локальной машины (https://stackoverflow.com/questions/71714919/unable-to-access-my-minikube-cluster-from-the-browser-because-you-are-using-a).


А в качестве docker что используется?
Я ставил Docker Desktop, в нём в настройках работа через WSL2 и нормально порты пробрасываются.

S>При этом наблюдаю странную проблему — сеть изнутри pod-ов работает очень-очень стрёмно.


Именно внутри подов или виртуалки в целом?
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 10:50
Оценка:
Здравствуйте, karbofos42, Вы писали:
K>А в качестве docker что используется?
Docker desktop.
K>Я ставил Docker Desktop, в нём в настройках работа через WSL2 и нормально порты пробрасываются.
Он у меня вроде бы заведён через WSL2. И если просто запускать контейнеры внутри докера — всё ок, порты пробрасываются, всё работает.
А вот миникуб внутри этого докера выглядит как настоящий, но айпишники подов даже не пингуются.
K>Именно внутри подов или виртуалки в целом?
Внутри виртуалки миникуба стоит какая-то наркомания, в которой, к примеру, "wget" не понимает https, поэтому замерить скорость скачивания тех же имажей я сходу не смог.
Но в целом, судя по времени выкачивания докер-имажей, в виртуалке всё более-менее норм.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 10:58
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>Я на десятке запускал minikube из под wsl2 с драйвером docker. Проблем не было ни внутри ни снаружи.

Пока не получилось.
sinclair@DESKTOP-8L2SM42:~$ minikube start --addons=ingress,dashboard --driver=docker --vm=true --memory=7820 --cpus=4 --disk-size=50GB
😄  minikube v1.32.0 on Ubuntu 22.04 (amd64)
✨  Using the docker driver based on existing profile

🧯  The requested memory allocation of 7820MiB does not leave room for system overhead (total system memory: 7820MiB). You may face stability issues.
💡  Suggestion: Start minikube with less memory allocated: 'minikube start --memory=2200mb'


🧯  The requested memory allocation of 7820MiB does not leave room for system overhead (total system memory: 7820MiB). You may face stability issues.
💡  Suggestion: Start minikube with less memory allocated: 'minikube start --memory=2200mb'


🧯  The requested memory allocation of 7820MiB does not leave room for system overhead (total system memory: 7820MiB). You may face stability issues.
💡  Suggestion: Start minikube with less memory allocated: 'minikube start --memory=2200mb'

👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🏃  Updating the running docker "minikube" container ...
🐳  Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
    ▪ Generating certificates and keys ...
💢  initialization failed, will try again: wait: /bin/bash -c "sudo env PATH="/var/lib/minikube/binaries/v1.28.3:$PATH" kubeadm init --config /var/tmp/minikube/kubeadm.yaml  --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,DirAvailable--var-lib-minikube-etcd,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap,NumCPU,Mem,SystemVerification,FileContent--proc-sys-net-bridge-bridge-nf-call-iptables": Process exited with status 1
stdout:
[init] Using Kubernetes version: v1.28.3
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[certs] Using certificateDir folder "/var/lib/minikube/certs"
[certs] Using existing ca certificate authority
[certs] Using existing apiserver certificate and key on disk

stderr:
        [WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
        [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
        [WARNING DirAvailable--var-lib-minikube-etcd]: /var/lib/minikube/etcd is not empty
error execution phase certs/apiserver-kubelet-client: [certs] certificate apiserver-kubelet-client not signed by CA certificate ca: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "minikubeCA")
To see the stack trace of this error execute with --v=5 or higher

    ▪ Generating certificates and keys ...

💣  Error starting cluster: wait: /bin/bash -c "sudo env PATH="/var/lib/minikube/binaries/v1.28.3:$PATH" kubeadm init --config /var/tmp/minikube/kubeadm.yaml  --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,DirAvailable--var-lib-minikube-etcd,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap,NumCPU,Mem,SystemVerification,FileContent--proc-sys-net-bridge-bridge-nf-call-iptables": Process exited with status 1
stdout:
[init] Using Kubernetes version: v1.28.3
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[certs] Using certificateDir folder "/var/lib/minikube/certs"
[certs] Using existing ca certificate authority
[certs] Using existing apiserver certificate and key on disk

stderr:
        [WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
        [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
        [WARNING DirAvailable--var-lib-minikube-etcd]: /var/lib/minikube/etcd is not empty
error execution phase certs/apiserver-kubelet-client: [certs] certificate apiserver-kubelet-client not signed by CA certificate ca: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "minikubeCA")
To see the stack trace of this error execute with --v=5 or higher


╭───────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                           │
│    😿  If the above advice does not help, please let us know:                             │
│    👉  https://github.com/kubernetes/minikube/issues/new/choose                           │
│                                                                                           │
│    Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue.    │
│                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────╯

❌  Exiting due to GUEST_START: failed to start node: wait: /bin/bash -c "sudo env PATH="/var/lib/minikube/binaries/v1.28.3:$PATH" kubeadm init --config /var/tmp/minikube/kubeadm.yaml  --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,DirAvailable--var-lib-minikube,DirAvailable--var-lib-minikube-etcd,FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml,FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml,FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml,FileAvailable--etc-kubernetes-manifests-etcd.yaml,Port-10250,Swap,NumCPU,Mem,SystemVerification,FileContent--proc-sys-net-bridge-bridge-nf-call-iptables": Process exited with status 1
stdout:
[init] Using Kubernetes version: v1.28.3
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[certs] Using certificateDir folder "/var/lib/minikube/certs"
[certs] Using existing ca certificate authority
[certs] Using existing apiserver certificate and key on disk

stderr:
        [WARNING Swap]: swap is enabled; production deployments should disable swap unless testing the NodeSwap feature gate of the kubelet
        [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
        [WARNING DirAvailable--var-lib-minikube-etcd]: /var/lib/minikube/etcd is not empty
error execution phase certs/apiserver-kubelet-client: [certs] certificate apiserver-kubelet-client not signed by CA certificate ca: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "minikubeCA")
To see the stack trace of this error execute with --v=5 or higher


╭───────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                           │
│    😿  If the above advice does not help, please let us know:                             │
│    👉  https://github.com/kubernetes/minikube/issues/new/choose                           │
│                                                                                           │
│    Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue.    │
│                                                                                           │
╰───────────────────────────────────────────────────────────────────────────────────────────╯

Сходу не вижу, что именно я сделал не так.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 11:42
Оценка:
Здравствуйте, Doom100500, Вы писали:
D>Ну да, только бинарник minikube туда надо поставить для линукса.
Не, не работает.
Вот развернул Eclipse Che — все диагностики зелёненькие, все поды развёрнуты, адреса известны.
Только эти адреса даже не пингуются, ни из винды, ни изнутри WSL2. Тем более на них нельзя зайти по HTTPS.
Так что миникуб в докере — это декорация, как минимум под виндой.
Точно такой же Eclipse Che, развёрнутый в миникубе под hyperv, хотя бы работает (айпишники пингуются, коннект открывается).
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Minikube on Windows
От: karbofos42 Россия  
Дата: 04.04.24 12:11
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А вот миникуб внутри этого докера выглядит как настоящий, но айпишники подов даже не пингуются.


По-моему и не должны пинговаться.
В целом для kubernetes по-моему странно ломиться на конкретный pod (не за логами, а фронтэнд дёргать).
Обычно вроде через сервисы ходят.
Через команду minikube service <имя сервиса> создаётся туннель и собственно в браузере на хосте сразу открывается страничка с фронтэндом указанного сервиса.
Для этого на localhost будет использоваться рандомный порт, а не какой-нибудь указанный в сервисе 8080.
Ну, либо через kubectl port-forward можно фиксированный порт пробросить на нужный сервис в кластере kubernetes, тогда можно будет ломиться на http://localhost:8080 и попадать в сервис, а не каждый раз новый порт получать.
В docker проброс портов работает из коробки без дополнительных телодвижений, т.к. всё же это не N компов и не пытается их эмулировать.
Re[4]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 13:24
Оценка:
Здравствуйте, karbofos42, Вы писали:
K>По-моему и не должны пинговаться.
K>В целом для kubernetes по-моему странно ломиться на конкретный pod (не за логами, а фронтэнд дёргать).
Ну, я иду не на "конкретный под", а на адрес сервиса. И вот он не отвечает, если запустить миникуб в докере. А в hyperv — отвечает.

K>Обычно вроде через сервисы ходят.


K>Через команду minikube service <имя сервиса> создаётся туннель и собственно в браузере на хосте сразу открывается страничка с фронтэндом указанного сервиса.

Там nginx сконфигурирован смотреть в host header, и его localhost не устраивает — нужно именно 192.168.58.2.nip.io.
И порт нужен 443, иначе там всё ломается после пары редиректов.

K>Для этого на localhost будет использоваться рандомный порт, а не какой-нибудь указанный в сервисе 8080.

K>Ну, либо через kubectl port-forward можно фиксированный порт пробросить на нужный сервис в кластере kubernetes, тогда можно будет ломиться на http://localhost:8080 и попадать в сервис, а не каждый раз новый порт получать.
K>В docker проброс портов работает из коробки без дополнительных телодвижений, т.к. всё же это не N компов и не пытается их эмулировать.
Ну, по идее-то вся эта штука изображает из себя целый кластер, который должен себя вести примерно так же, как если бы он был развёрнут на настоящем железе.
Если использовать driver=hyperv, то адрес дашборда получается вот такой: https://172.27.37.137.nip.io/dashboard/ — и он реально работает безо всяких туннелей.
А в докере всё выглядит как настоящее, но связи нет
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Minikube on Windows
От: vsb Казахстан  
Дата: 04.04.24 14:08
Оценка:
Конкретно по этому вопросу вряд ли что посоветую (да и сомневаюсь, что вообще кто-то посоветует, ковыряться в потрохах винды с этими hyperv и wsl-ями вряд ли кто-то возьмётся).

Но вообще я бы посоветовал взять виртуалку, поставить на неё debian и по официальной инструкции через kubeadm поставить нормальный kubernetes в конфигурации с одной нодой (ну или взять две виртуалки в одной подсети и сделать аж кластер, хотя для целей запуска чего-либо это не требуется).

Думаю, что все проблемы с производительностью это решит.

Альтернативно лично у меня нормально работал кубернетес, который в докер десктопе встроен. Правда под маком, но думаю, в винде тоже должен нормально работать.
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 15:43
Оценка:
Здравствуйте, vsb, Вы писали:
vsb>Но вообще я бы посоветовал взять виртуалку,
Уже взята. VM под HyperV.
vsb>поставить на неё debian
Стоит убунта. Не уверен, что дебиан сильно лучше.
vsb>и по официальной инструкции через kubeadm поставить нормальный kubernetes в конфигурации с одной нодой
А чем это будет отличаться от minikube?
vsb>(ну или взять две виртуалки в одной подсети и сделать аж кластер, хотя для целей запуска чего-либо это не требуется).
Кластер мне не нужен. Мне нужно потриалить Eclipse Che.
vsb>Думаю, что все проблемы с производительностью это решит.
Всё может быть.
vsb>Альтернативно лично у меня нормально работал кубернетес, который в докер десктопе встроен. Правда под маком, но думаю, в винде тоже должен нормально работать.
В докер десктопе есть кубернетес?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.04.24 15:52
Оценка: 2 (1)
Здравствуйте, karbofos42, Вы писали:
K>А в качестве docker что используется?
K>Я ставил Docker Desktop, в нём в настройках работа через WSL2 и нормально порты пробрасываются.
Короче, это нерешаемая проблема.
https://docs.docker.com/desktop/networking/#i-cannot-ping-my-containers

Docker Desktop can't route traffic to Linux containers.

Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Minikube on Windows
От: vsb Казахстан  
Дата: 04.04.24 16:34
Оценка:
Здравствуйте, Sinclair, Вы писали:

vsb>>Но вообще я бы посоветовал взять виртуалку,

S>Уже взята. VM под HyperV.
vsb>>поставить на неё debian
S>Стоит убунта. Не уверен, что дебиан сильно лучше.

Без разницы.

vsb>>и по официальной инструкции через kubeadm поставить нормальный kubernetes в конфигурации с одной нодой

S>А чем это будет отличаться от minikube?

Как минимум тем, что им пользуются больше людей и на теоретические проблемы можно пытаться искать ответы.

vsb>>Альтернативно лично у меня нормально работал кубернетес, который в докер десктопе встроен. Правда под маком, но думаю, в винде тоже должен нормально работать.

S>В докер десктопе есть кубернетес?

Да.
Отредактировано 04.04.2024 16:44 vsb . Предыдущая версия .
Re: Minikube on Windows
От: SkyDance Земля  
Дата: 04.04.24 17:36
Оценка:
S>Для эксперимента развернул его в minikube, поставленном на моей Windows 11 Pro.

Когда мне понадобилось аналогичное предприятие, я завел виртуалку с Ubuntu, и уже внутри нее был minikube и весь прочий Лас-Вегас. Работало отлично, кстати.

PS: по историческим причинам, виртуалка была на VMWare, но я не думаю, что Hyper-V чем-то хуже в этом аспекте.
Re[4]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.04.24 02:42
Оценка:
Здравствуйте, vsb, Вы писали:
vsb>Без разницы.
Ну, в теории наверное да. На практике, конечно, красноглазие — это пипец.
Всё сводится к гуглению своей проблемы, и втыканию в терминал произвольных скриптов в надежде, что оно заработает
Характерный пример: https://stackoverflow.com/questions/59265021/unable-to-locate-package-kubectl-when-installing-the-kubectl-kubeadm-for-kuberne
У меня — свежепоставленная Ubuntu 22.04. И первый же шаг в инструкции по установке не работает .
Вот пока писал, убунта предложила "обновить пакеты". Обновил — перезагрузка — голубой экран, 0% CPU, ничего не происходит .
Надо почаще делать снапшоты.

vsb>Как минимум тем, что им пользуются больше людей и на теоретические проблемы можно пытаться искать ответы.

Ну, попробовать можно. Но у Eclipse Che есть две инструкции:
1. Поставить его в Minikube https://eclipse.dev/che/docs/stable/administration-guide/installing-che-on-minikube/
2. Поставить его в OpenShift https://eclipse.dev/che/docs/stable/administration-guide/installing-che-on-openshift-using-cli/
Как его поставить в "нормальный кубернетес с одной нодой" — хз.

vsb>>>Альтернативно лично у меня нормально работал кубернетес, который в докер десктопе встроен. Правда под маком, но думаю, в винде тоже должен нормально работать.

S>>В докер десктопе есть кубернетес?
vsb>Да.
Ну, вот непонятно, как им воспользоваться (и да, судя по всему, это не поможет, т.к. в докер десктопе нетворкинг контейнеров сломан безнадёжно).
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Minikube on Windows
От: sergey2b ЮАР  
Дата: 05.04.24 03:36
Оценка: 82 (1) +1
Здравствуйте, Sinclair, Вы писали:


S>Ну, вот непонятно, как им воспользоваться (и да, судя по всему, это не поможет, т.к. в докер десктопе нетворкинг контейнеров сломан безнадёжно).


я из за пробле с сетью под вин
стал использовать docker под linux
Re[6]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.04.24 05:22
Оценка:
Здравствуйте, sergey2b, Вы писали:
S>я из за пробле с сетью под вин
S>стал использовать docker под linux
Ну, вот в докере внутри миникуба внутри докера внутри убунты оно заработало.
Как бы мне теперь ещё IP-адреса контейнеров, лежащих в докере внутри миникуба внутри докера внутри убунты внутри hyper-V, пробросить наружу, в свой локалхост?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: почти оффтоп
От: Слава  
Дата: 05.04.24 08:46
Оценка: 9 (1) :)
Здравствуйте, Sinclair, Вы писали:

S>Для эксперимента развернул его в minikube, поставленном на моей Windows 11 Pro.


https://www.youtube.com/watch?v=gqxYF46xJ48
Re[7]: Minikube on Windows
От: Vetal_ca Канада http://vetal.ca
Дата: 08.04.24 02:46
Оценка: 78 (1)
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, sergey2b, Вы писали:

S>>я из за пробле с сетью под вин
S>>стал использовать docker под linux
S>Ну, вот в докере внутри миникуба внутри докера внутри убунты оно заработало.
S>Как бы мне теперь ещё IP-адреса контейнеров, лежащих в докере внутри миникуба внутри докера внутри убунты внутри hyper-V, пробросить наружу, в свой локалхост?

kubectl port forward
— Что-то нативное Minicube
— Load balancer Service, Metallb.
— VPN воткнуть прямо в кластер и к нему соединяться. Тот же Zerotier или Tailscale. В VPN нужно добавить всю подсеть сервисов а то и подов. Тогда можно "ходить как у себя дома" по всему хозяйству

Я первые 2 варианта сам не пробовал.
Re[8]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.04.24 02:59
Оценка:
Здравствуйте, Vetal_ca, Вы писали:
V_>- kubectl port forward
Нет, порт-форвард не подходит. Нужны нормальные полноценные IP-адреса, а не localhost:23523.
V_>- Что-то нативное Minicube
Чтобы использовать нативное Minicube, нужно запускать Minikube на локалхосте. А это — не работает в Win:
— в докере нетворк роутинг просто убит насмерть, там какое-то адское смешение всего со всем, которое невозможно починить
— в hyperV роутинг работает, но изнутри контейнеров во внешнюю сеть связи почти что нет — не всегда резолвятся имена, tcp льёт по 2-3 килобайта в секунду
V_>- Load balancer Service, Metallb.
Эммм, этот сервис вроде для baremetal minikube. А у меня — minikube внутри Ubuntu, которая внутри HyperV.
V_>- VPN воткнуть прямо в кластер и к нему соединяться. Тот же Zerotier или Tailscale. В VPN нужно добавить всю подсеть сервисов а то и подов. Тогда можно "ходить как у себя дома" по всему хозяйству
Выглядит правдоподобно. Но
1. Нужна бы пошаговая инструкция, т.к. тут слишком много движущихся частей, чтобы подбирать работоспособное сочетание методом тыка
2. А это будет дружить с офисной VPN, включённой параллельно?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Minikube on Windows
От: amironov79  
Дата: 08.04.24 04:22
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Нагуглить я не смог по этому поводу ничего — не могу подобрать такое сочетание ключевых слов, чтобы находилось что-то полезное.

S>Кто может что посоветовать по данному вопросу? Где и какие настройки подкрутить? Куда вообще смотреть?

Не работал с minikube, но с контейнерами помогает portproxy
netsh interface portproxy add v4tov4 listenport=443 connectaddress=127.0.0.1 connectport=21443

А так бы почитал про настройку сети в wsl2, кажется там я про portproxy и вычитал.
Re[9]: Minikube on Windows
От: Vetal_ca Канада http://vetal.ca
Дата: 08.04.24 04:30
Оценка: 78 (1)
Здравствуйте, Sinclair, Вы писали:


S>Выглядит правдоподобно. Но

S>1. Нужна бы пошаговая инструкция, т.к. тут слишком много движущихся частей, чтобы подбирать работоспособное сочетание методом тыка

У тебя 2 клиента:

1. На хосте (Windows Zerotier)
2. Pod в Minicube

S>2. А это будет дружить с офисной VPN, включённой параллельно?


Да, это простая подсеть

Например,

172.25.12.0/24 — это подсеть Zerotier

172.25.12.1 — Zerotier Windows
172.25.12.2 — Zerotier Pod

Скажем,
10.16.0.0/16 — сервисы в миникуб
10.17.0.0/16 — pods



Я настраивал через Terraform, сейчас глянул код, в терминах resource "zerotier_network" "occams_router", https://github.com/zerotier/terraform-provider-zerotier

Через UI Zerotier, если потыкать, будут соответствующие поля:

`
...
route {
via = "172.25.12.2"
route = "10.16.0.0/16"
}
route {
via = "172.25.12.2"
route = "10.17.0.0/16"
}
...
`

Или объединенная route, `10.16.0.0/15`, == (10.16.0.0/16 + 10.17.0.0/16)

Настройки выше (терраформ), это настройки самих клиентов в terraform или Zerotier UI на сайте. После этого, если запустить клиент в Windows, то добавится route 10.16.0.0/15 (netstat -rn)

Сам Pod настраивается согласно https://hub.docker.com/r/zerotier/zerotier#!

Скопировал свой код в Терраформ, для кубернетес:

```
locals {
zt_net_id = var.zerotier.network_ids[var.zerotier.network]
zt_key_pair = var.zerotier.host_keys[var.zerotier.network][var.instance.name]
zt_secret = "zerotier"
zt_selector = {
app = "zerotier"
}

zt_mounts = {
secrets_path = "/data"
share_path = "/var/lib/zerotier-one"
share_mount = "share"
secrets_mount = "secrets"
}
zt_container_uid = 999
}

resource "kubernetes_secret" "zt" {
metadata {
name = local.zt_secret
namespace = local.ns
}
data = {
devicemap = "${local.zt_net_id}=${var.zerotier.interface}"
("identity.public") = local.zt_key_pair.public
("identity.secret") = local.zt_key_pair.private
}
}

resource "kubernetes_deployment" "zt" {
metadata {
name = "zerotier"
namespace = local.ns
}
spec {
replicas = 1

strategy {
// For the host network, the interface is busy, so Zerotier cannot start a new one since the old pod keeps the interface up
type = var.host_network ? "Recreate" : "RollingUpdate"
}
selector {
match_labels = local.zt_selector
}
template {
metadata {
labels = local.zt_selector
}
spec {
host_network = var.host_network
init_container {
name = "data-prep"
image = var.images.busy_box
command = [
"sh",
"-c",
# Copy and chown secrets
"cp -v ${local.zt_mounts.secrets_path}/* ${local.zt_mounts.share_path} && chown -R ${local.zt_container_uid}:${local.zt_container_uid} ${local.zt_mounts.share_path}"
]
volume_mount {
mount_path = local.zt_mounts.secrets_path
name = local.zt_mounts.secrets_mount
read_only = true
}
volume_mount {
mount_path = local.zt_mounts.share_path
name = local.zt_mounts.share_mount
}
}
container {
name = "zerotier"
image = var.images.zerotier
image_pull_policy = "IfNotPresent"
args = [local.zt_net_id]
security_context {
privileged = true
}
volume_mount {
mount_path = local.zt_mounts.share_path
name = local.zt_mounts.share_mount
}
}
volume {
name = local.zt_mounts.share_mount
empty_dir {}
}
volume {
name = local.zt_mounts.secrets_mount
secret {
secret_name = kubernetes_secret.zt.metadata[0].name
}
}
}
}
}
}
```

По коду, внутрь добавил mounts с ключами Zerotier. Если поиграть с контейнером по ссылке с докур хаб, то будет понятно о чем речь.

Код (персональный) с 2022-08-05, деталей не очень помню. Но, думаю, поможет
Re[2]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.04.24 07:51
Оценка:
Здравствуйте, amironov79, Вы писали:
A>Не работал с minikube, но с контейнерами помогает portproxy
A>
netsh interface portproxy add v4tov4 listenport=443 connectaddress=127.0.0.1 connectport=21443

Эмм, это конечно здорово, но как мне это поможет получить роутинг на IP-адрес вида 192.168.58.2?
Порт-форвардинг — это костыль, который помогает поотлаживать узкопрофильные сервисы, у которых наружу торчит один ендпоинт и больше им ничего не нужно.
А для полноценной работы с веб-приложениями, у которых на одном адресе поднято несколько ендпоинтов, различающихся по Host header, это непригодно.

A>А так бы почитал про настройку сети в wsl2, кажется там я про portproxy и вычитал.

Сеть в wsl2 и сама по себе работает из рук вон плохо. См. напр. https://github.com/microsoft/WSL/issues/11011
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.04.24 07:55
Оценка:
Здравствуйте, Vetal_ca, Вы писали:
V_>У тебя 2 клиента:
Спасибо, попробую разобраться.
Там ещё Pod-ы поднимаю не я, а Eclipse Che. Нужно будет выяснить, как там ему запихать этого клиента в Workspace pod.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: Minikube on Windows
От: Vetal_ca Канада http://vetal.ca
Дата: 08.04.24 10:22
Оценка:
Здравствуйте, Sinclair, Вы писали


S>Там ещё Pod-ы поднимаю не я, а Eclipse Che. Нужно будет выяснить, как там ему запихать этого клиента в Workspace pod.


Запихивать не нужно — просто самодостаточный Deployment/Pod в кластере, не зависящий от остального. Обеспечивающий доступ извне
Re[3]: Minikube on Windows
От: amironov79  
Дата: 08.04.24 10:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Эмм, это конечно здорово, но как мне это поможет получить роутинг на IP-адрес вида 192.168.58.2?

S>Порт-форвардинг — это костыль, который помогает поотлаживать узкопрофильные сервисы, у которых наружу торчит один ендпоинт и больше им ничего не нужно.

Мне помогло выставить сервисы наружу. Если это не твой случай, то извини

S>А для полноценной работы с веб-приложениями, у которых на одном адресе поднято несколько ендпоинтов, различающихся по Host header, это непригодно.


Это вообще здесь причем? Настройка сети и настройка reverse proxy -- разные задачи.
Re[3]: Minikube on Windows
От: karbofos42 Россия  
Дата: 08.04.24 20:15
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Эмм, это конечно здорово, но как мне это поможет получить роутинг на IP-адрес вида 192.168.58.2?

S>Порт-форвардинг — это костыль, который помогает поотлаживать узкопрофильные сервисы, у которых наружу торчит один ендпоинт и больше им ничего не нужно.
S>А для полноценной работы с веб-приложениями, у которых на одном адресе поднято несколько ендпоинтов, различающихся по Host header, это непригодно.

Порт форвардинг просто локальный порт пробрасывает внутрь minikube.
С разными доменными адресами — это вопрос к DNS.
Либо в файле hosts нужные адреса заворачивать на 127.0.0.1,
либо с аддоном ingress-dns разбираться
Re[4]: Minikube on Windows
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.04.24 00:57
Оценка:
Здравствуйте, karbofos42, Вы писали:

K>Порт форвардинг просто локальный порт пробрасывает внутрь minikube.

Отож.
K>С разными доменными адресами — это вопрос к DNS.
Вопрос не в доменных адресах, а в IP адресах.
K>Либо в файле hosts нужные адреса заворачивать на 127.0.0.1,
Да, я это пробовал. В итоге лучшее, что удалось получить — internal error 500. Где-то видать какой-то из компонентов не может дойти до другого по этому подменённому адресу.
Так что нет, роутинг в докер десктоп сломан надёжно.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.