minikube не достиже приватни API? Прво проверите драјвер
Хост, чвор и Pod имају сопствене руте и сопствени resolver. Именујте драјвер, тестирајте исти endpoint са сва три места, па поправите контекст који је отказао.
Приватни API одговара са вашег лаптопа, а Pod у minikube не може да га достигне. Пре него што било шта промените на хосту, именујте драјвер иза активног профила, јер та једна чињеница одређује са које мреже захтев заиста излази. Затим тестирајте исти endpoint са хоста, са чвора и са Pod-а. Само један од та три је оно што је отказало, а погрешна претпоставка кошта поподне.
Корак 0: именујте драјвер и порекло
Питајте minikube који је профил активан и како се извршава. Драјвер за контејнере ставља чвор у контејнер на вашем рачунару, VM драјвер га ставља у виртуелну машину, а удаљени драјвер га ставља негде сасвим другде.
minikube profile list
minikube status
kubectl config current-context
Из тога запишите одакле захтев потиче. Одговор одређује чији resolver и које руте су важне, а то није увек онај са хоста. Два профила на истом лаптопу могу се за исти URL понашати потпуно различито.
| Context | What has to work |
|---|---|
| Host process | Host resolver and host route to the private destination |
| minikube node | The node's own resolver and its outbound path |
| Pod | Pod DNS through cluster services plus the cluster network path |
Корак 1: тестирајте исти endpoint три пута
Користите један безопасан endpoint и држите име хоста, порт и адресну фамилију идентичним у сва три теста. Ако било шта од тога промените између покретања, резултати нису упоредиви.
curl -sS -o /dev/null -w '%{http_code}\n' https://api.corp.example/health
minikube ssh -- curl -sS -o /dev/null -w '%{http_code}\n' https://api.corp.example/health
kubectl run probe --rm -it --image=curlimages/curl --restart=Never -- \
curl -sS -o /dev/null -w '%{http_code}\n' https://api.corp.example/health
Успешан pull слике од стране чвора ништа не доказује о разрешавању имена за приватни хост. Успешан јавни захтев доказује још мање. Држите резултате одвојено по контексту, јер образац у три реда је дијагноза, а појединачни неуспех је траг.
Ако и ред хоста отказује, станите. Имате проблем са мрежом хоста, а кластер је одвраћање пажње.
Корак 2: задржите пут хоста до кластера
Постоји други смер који људи заборављају: хост мора наставити да долази до сопственог API-ја и сервиса кластера. VPN клијент може инсталирати руте које се такмиче са префиксима које minikube користи за своју мрежу чворова, распон сервиса и распон подова.
Када се то догоди, симптом је збуњујућ, јер тунел ради, а kubectl престане да одговара или NodePort одбија везе. Изгледа као квар кластера, а то је квар рутирања на лаптопу.
Проверите routing табелу хоста према распонима minikube-а пре него што за било шта друго окривите тунел. Преклапање се обично види као специфичнија рута која показује на интерфејс тунела за префикс који кластер очекује као свој.
Корак 3: решите преклапање без искључивања VPN-а
Сопствени minikube приручник за VPN и proxy обрађује те конфликте и своје примере распона третира као ствари које треба прегледати, а не као универзалну листу. Прочитајте га уз профил који заиста имате.
Где постоји стварно преклапање, подржани одговор је распон без преклапања или намерна политика локалног приступа коју одобри власник VPN-а. Промена распона сервиса није исто што и промена распона подова, а ни једно није исто што и промена мреже чворова.
Искључивање корпоративног тунела да би локални кластер радио није заобилазно решење; то је одлука о политици коју мора да донесе неко други. Однесите је тој особи уместо да то урадите тихо након што су сви остали отишли кући. Ако сте то већ урадили, вратите га пре него што питате.
Корак 4: раздвојите proxy, DNS и четири облика квара
Ако је потребан proxy, идентификујте ком контексту је потребан. Подешавање прегледача на хосту не конфигурише процес унутар чвора, а Pod-у су потребне променљиве окружења или конфигурација proxy-ја на нивоу кластера.
Затим класификујте квар уместо да га описујете. Име које се не разрешава је DNS. Име које се разрешава и одбија везу је рутирање или listener. Веза која се успостави и падне на идентитету је TLS. Успешна веза са телом грешке је апликација.
Сваки од та четири припада другој поправци, а само један од њих се односи на VPN. Запишите који сте уочили у сваком контексту, и следећа особа наслеђује доказе уместо приче.