ProHoster > Blog > башкаруу > Tcpserver жана netcat менен Kubernetes поддонунда же контейнерде туннелди кантип ачуу керек
Tcpserver жана netcat менен Kubernetes поддонунда же контейнерде туннелди кантип ачуу керек
Эскертүү. котормо.: LayerCI жаратуучусунун бул практикалык эскертүүсү Kubernetes (жана башкалар) үчүн кеңештер жана амалдар деп аталган нерселердин эң сонун иллюстрациясы болуп саналат. Бул жерде сунушталган чечим саналуу чечимдердин бири гана жана, балким, эң айкын эмес (айрым учурларда, комментарийлерде айтылган K8 үчүн "түпкүлүктүү" чечим ылайыктуу болушу мүмкүн. kubectl port-forward). Бирок, бул көйгөйдү жок дегенде классикалык утилиталарды колдонуу жана аларды андан ары айкалыштыруу көз карашынан кароого мүмкүндүк берет - ошол эле учурда жөнөкөй, ийкемдүү жана күчтүү (илхам үчүн аягында "башка идеяларды" караңыз).
Кадимки кырдаалды элестетиңиз: жергиликтүү машинаңыздагы порт трафикти сыйкырдуу түрдө поддонго/контейнерге (же тескерисинче) жөнөтүшүн каалайсыз.
Мүмкүн болгон колдонуу учурлары
HTTP акыркы чекити эмнени кайтарарын текшериңиз /healthz өндүрүштүк кластердеги под.
TCP мүчүлүштүктөрдү жоюгучту жергиликтүү машинадагы подкокко туташтырыңыз.
Аныктыгын текшерүү менен убара болбой туруп, жергиликтүү маалымат базасынын куралдарынан өндүрүш базасына кирүү мүмкүнчүлүгүн алыңыз (көбүнчө localhost тамыр укуктары бар).
Статистика кластериндеги маалыматтар үчүн бир жолку көчүрүү скриптин ага контейнер түзбөстөн иштетиңиз.
VNC сеансын виртуалдык иштакта иштеген подкокко туташтырыңыз (XVFB караңыз).
зарыл болгон куралдар жөнүндө бир нече сөз
Tcpserver — Open Source утилитасы Linux пакеттеринин репозиторийлеринин көбүндө жеткиликтүү. Бул сизге локалдык портту ачууга жана stdin/stdout аркылуу алынган трафикти каалаган көрсөтүлгөн буйруктан ага багыттоого мүмкүндүк берет:
Бул буйрук поддонго жергиликтүү машинадагы 8000 портуна кирүү мүмкүнчүлүгүн берет.
Баш скрипти
Мен Bash үчүн атайын скрипт жаздым, ал сизге Kubernetes өндүрүш кластерин башкарууга мүмкүндүк берет 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.
Туннел үчүн ютуб негизги сызыкты төмөнкү менен алмаштыра аласыз: