minikube хувийн API-д хүрэхгүй байна уу? Эхлээд драйверыг шалгаарай
Хост, зангилаа болон Pod тус бүр өөрийн маршрут, өөрийн resolver-тэй. Драйверыг нэрлэж, ижил endpoint-ийг гурвуулангаас турших, дараа нь бүтэлгүйтсэн контекстийг засаарай.
Хувийн API зөөврийн компьютерээс хариулж, minikube доторх Pod түүнд хүрч чадахгүй байна. Хост дээр ямар нэгэн зүйлийг өөрчлөхөөс өмнө идэвхтэй профайлын ард байгаа драйверыг нэрлээрэй, учир нь энэ ганц баримт хүсэлт яг аль сүлжээнээс гарч байгааг шийднэ. Дараа нь ижил 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
Зангилааны амжилттай image татах нь хувийн хостод нэр шийдвэрлэх тухай юу ч батлахгүй. Амжилттай нийтийн хүсэлт бүр ч бага батална. Үр дүнг контекстээр тусгаарлан байлгаарай, учир нь гурван мөрөнд харагдах хэв маяг нь онош, харин ганц бүтэлгүйтэл нь сэжүүр юм.
Хост мөр бас бүтэлгүйтвэл зогсоорой. Танд хостны сүлжээний асуудал байгаа бөгөөд кластер нь анхаарал сарниулагч юм.
2-р алхам: хостноос кластер хүрэх замыг хадгалах
Хүмүүсийн мартдаг хоёр дахь чиглэл байдаг: хост кластерын өөрийн API болон үйлчилгээнд үргэлжлүүлэн хүрэх ёстой. VPN клиент нь minikube-ийн зангилааны сүлжээ, үйлчилгээний хүрээ, pod хүрээнд ашигладаг угтвартай өрсөлдөх маршрутуудыг суулгаж болно.
Ийм зүйл тохиолдоход шинж тэмдэг нь төөрөгдүүлдэг, учир нь туннель ажиллаж байхад kubectl хариу өгөхөө болих эсвэл NodePort холболтыг татгалздаг. Энэ нь кластерын гэмтэл мэт харагдах боловч үнэндээ зөөврийн компьютерын маршрутжуулалтын гэмтэл юм.
Туннелийг өөр зүйлээр буруутгахаасаа өмнө хостны маршрутжуулалтын хүснэгтийг minikube-ийн хүрээтэй харьцуулаарай. Давхцал нь ихэвчлэн кластер өөрийн гэж үздэг угтварын хувьд туннелийн интерфейс рүү заасан илүү тодорхой маршрут хэлбэрээр харагддаг.
3-р алхам: VPN-ийг унтраалгүйгээр давхцлыг шийдэх
minikube-ийн өөрийн VPN болон прокси гарын авлага эдгээр зөрчлийг хэлэлцэж, жишээ хүрээг бүх нийтийн жагсаалт биш, шалгах зүйл гэж үздэг. Үүнийг таны бодитоор байгаа профайлын хамт уншаарай.
Бодит давхцал байгаа үед дэмжигдсэн хариулт нь давхцалгүй хүрээ эсвэл VPN-ийн эзэмшигчийн зөвшөөрсөн санаатай орон нутгийн хандалтын бодлого юм. Үйлчилгээний хүрээг өөрчлөх нь pod хүрээг өөрчлөхтэй ижил зүйл биш бөгөөд аль нь ч зангилааны сүлжээг өөрчлөхтэй ижил биш.
Орон нутгийн кластер ажиллахын тулд корпорацийн туннелийг унтраах нь тойрч гарах арга биш; энэ нь өөр хэн нэгний гаргах ёстой бодлогын шийдвэр юм. Бусдыг гэртээ харьсны дараа чимээгүйхэн хийхийн оронд тэр хүнд хүргээрэй. Хэрэв та аль хэдийн хийсэн бол асуухаасаа өмнө буцааж тавиарай.
4-р алхам: прокси, DNS болон дөрвөн гэмтлийн хэлбэрийг ялгах
Хэрэв прокси шаардлагатай бол аль контекст хэрэгтэйг тодорхойлоорой. Хост дээрх хөтчийн тохиргоо зангилаа доторх процессыг тохируулдаггүй бөгөөд Pod-д орчны хувьсагчид эсвэл кластерын түвшний прокси тохиргоо хэрэгтэй.
Дараа нь гэмтлийг дүрслэхийн оронд ангилаарай. Шийдэгдэхгүй нэр бол DNS. Шийдэгдэж, холболтоос татгалздаг нэр бол маршрутжуулалт эсвэл listener. Үүсэж, таних тэмдэг дээр бүтэлгүйтдэг холболт бол TLS. Алдааны биетэй амжилттай холболт бол аппликейшн.
Тэдгээр дөрвийн тус бүр өөр засварт хамаарах бөгөөд зөвхөн нэг нь VPN-ийн тухай. Контекст бүрт аль нь ажиглагдсаныг бичиж аваарай, дараагийн хүн түүх биш нотолгоо өвлөнө.