ProHoster > Блог > басқарма > tcpserver және netcat көмегімен Kubernetes pod немесе контейнерде туннельді қалай ашуға болады
tcpserver және netcat көмегімен Kubernetes pod немесе контейнерде туннельді қалай ашуға болады
Ескерту. аударма: LayerCI жасаушысының бұл практикалық жазбасы Kubernetes (және т.б.) үшін кеңестер мен амалдар деп аталатын тамаша иллюстрация болып табылады. Мұнда ұсынылған шешім аз ғана шешімдердің бірі және, мүмкін, ең айқын емес (кейбір жағдайларда, түсініктемелерде айтылған K8 үшін «туған» шешім қолайлы болуы мүмкін. kubectl port-forward). Дегенмен, бұл мәселені кем дегенде классикалық утилиталарды пайдалану және оларды одан әрі біріктіру тұрғысынан қарауға мүмкіндік береді - сонымен бірге қарапайым, икемді және күшті (шабыт алу үшін соңында «басқа идеяларды» қараңыз).
Әдеттегі жағдайды елестетіп көріңіз: жергілікті құрылғыңыздағы порт трафикті сиқырлы түрде подводқа/контейнерге (немесе керісінше) жібергіңіз келеді.
Ықтимал пайдалану жағдайлары
HTTP соңғы нүктесі нені қайтаратынын тексеріңіз /healthz өндірістік кластердегі подвод.
TCP отладкасын жергілікті құрылғыдағы подводқа қосыңыз.
Түпнұсқалық растамамен алаңдамай-ақ жергілікті дерекқор құралдарынан өндірістік дерекқорға қол жеткізіңіз (әдетте localhost түбірлік құқықтары бар).
Кезеңдік кластердегі деректер үшін контейнер жасамай-ақ, бір реттік тасымалдау сценарийін іске қосыңыз.
VNC сеансын виртуалды жұмыс үстелі жұмыс істейтін подводқа қосыңыз (XVFB қараңыз).
Қажетті құралдар туралы бірнеше сөз
Tcpserver — Linux пакетінің репозитарийлерінің көпшілігінде қолжетімді ашық бастапқы қызметтік бағдарлама. Ол жергілікті портты ашуға және оған кез келген көрсетілген пәрменнен stdin/stdout арқылы алынған трафикті қайта бағыттауға мүмкіндік береді:
Бұл пәрмен подводқа жергілікті құрылғыдағы 8000 портына кіруге мүмкіндік береді.
Bash сценарийі
Мен Kubernetes өндірістік кластерін басқаруға мүмкіндік беретін Bash үшін арнайы сценарий жаздым LayerCIжоғарыда сипатталған әдісті қолдану:
kubetunnel() {
POD="$1"
DESTPORT="$2"
if [ -z "$POD" -o -z "$DESTPORT" ]; then
echo "Usage: kubetunnel [pod name] [destination port]"
return 1
fi
pkill -f 'tcpserver 127.0.0.1 6666'
tcpserver 127.0.0.1 6666 kubectl exec -i "$POD" nc 127.0.0.1 "$DESTPORT"&
echo "Connect to 127.0.0.1:6666 to access $POD:$DESTPORT"
}
Егер сіз осы функцияны қоссаңыз ~/.bashrc, пәрменімен подкасттағы туннельді оңай ашуға болады kubetunnel web-pod 8080 және жасаңыз curl localhost:6666.
Туннель үшін Докер негізгі жолды келесімен ауыстыруға болады: