Pod OpenVPN ninu Kubernetes ko gbe nnkan lọ? Ẹ wo ip_forward
Awọn onibara n pa VPN pod ati pe ko si nnkan lehin rẹ. Namespace ti pa gbigbe kuro, ati pe atunṣe gbọdọ ye admission, awọn atunbere ati ọna ipadabọ.
Laptop rẹ fihan ọna abẹla alawọ ewe, akọsilẹ onibara sọ pe awọn ipa ni a ti tẹ, ati pe adirẹsi kanṣoṣo ti o dahun ni IP ọna abẹla ti olupin VPN tikararẹ. Awọn ping ti o kọja rẹ ku lai k'oto si ohun ti o fojusi, boya ClusterIP, adirẹsi pod miiran tabi orukọ agbalejo ti gbogbo eniyan. Ijọpọ yẹn jẹ iwadi, kii ṣe aidaniloju: ṣiṣi kuro n ṣiṣẹ, ati fifo keji ko ṣiṣẹ.
Mo pade eyi lori node Debian kan ti n ṣiṣẹ aworan OpenVPN ti a fi chart sori ẹrọ, ati pe ọna abẹla ni apakan rọrun. Onibara gba iyalo 10.8.0.x, 10.8.0.1 dahun, ati 10.96.0.10, iṣẹ DNS ti ẹgbẹ, pari ni akoko. Ko si ohun ti o dabi alaisan ninu akọsilẹ olupin, ati pe idi niyẹn ti awọn eniyan fi bẹrẹ kikọ awọn ofin iptables ti wọn ko nilo lati fi ọwọ kan rara.
Pod VPN jẹ olutọpa, ati pe o tọ lati sọ ni taara. Awọn apo ti a fi ọwọ si wa, a ṣi wọn ninu namespace nẹtiwọọki ti pod tikararẹ, lẹhinna wọn gbọdọ jade nipasẹ ẹya miiran. Linux kọ igbese keji yẹn ayafi ti a ba ti mu gbigbe ṣiṣẹ ninu namespace kanna.
Ohun ti onibara le de ati ohun ti ko le de
Adirẹsi ti o dahun jẹ ti opin ọna abẹla, ati pe ilana VPN ni o ni ni agbegbe, nitorina gbigbe ko kopa rara. Ohun gbogbo miiran, pẹlu pod miiran, VIP iṣẹ tabi intanẹẹti, nilo ki kọnu gbe apo lati tun0 si eth0. Nigbati a ba kọ gbigbe yẹn, aami ni idakẹjẹ isọdọkan kii ṣe ikọ, nitori ko si ohun ti o nmu aṣiṣe ICMP pada si isalẹ ọna abẹla. O gba awọn akoko ipari, kii ṣe awọn ifiranṣẹ ai le de, ati pe eyi ni itọka pe ko si ẹnikan ti n tọpa rara.
Iṣẹju meji ti ipinya n dinku Layer naa. Ti awọn orukọ DNS ba kuna nigba ti awọn ping aise si IP iṣẹ ba ṣaṣeyọri, iṣoro naa wa ninu paipu DNS, kii ṣe gbigbe. Ti gbogbo opin ti o kọja adirẹsi peer ba pari ni akoko, pẹlu IP ihoho, bẹrẹ lati namespace.
Ka eto naa ninu namespace
Pod kọọkan gba namespace nẹtiwọọki tirẹ, ati net.ipv4.ip_forward jẹ sysctl fun namespace kọọkan. Yiyipada rẹ lori node ko sọ nkankan nipa container, ati pe o jẹ ọna ti o ni igbẹkẹle lati lo ọsan lori ẹrọ ti ko tọ.
kubectl exec -it deploy/openvpn -- sysctl net.ipv4.ip_forward
# net.ipv4.ip_forward = 0
Odo jẹrisi iwadi naa. Iye ko tun jogun lati iṣeto akoko ṣiṣe ti node: o bẹrẹ lati aiyipada aworan ni gbogbo igba ti a ba ṣẹda container. Nitorina atunṣe ti a fi ọwọ fi kubectl exec ... sysctl -w yii yoo padanu ni atunbere ti o tẹle ati pada bi abawọn ti o dabi igba diẹ.
Mu u ṣiṣẹ ki manifest le tọju rẹ
Aṣayan ti o duro pẹ ni init container ti n ṣiṣẹ ninu pod sandbox kanna ti o si kọ iye naa ki container VPN to bẹrẹ. Awọn container inu pod pin namespace nẹtiwọọki kan, nitorina eto naa gbe lọ sinu container akọkọ.
initContainers:
- name: enable-forwarding
image: busybox:1.36
command: ["sysctl", "-w", "net.ipv4.ip_forward=1"]
securityContext:
privileged: true
Gangan privileged: true ni laini ti awọn oluyẹwo tako, ati pe wọn tọ. Kikọ sysctl nilo boya anfani tabi agbara ti o ni opin, ati pe ẹgbẹ ti n ṣiṣẹ Pod Security Standard ti o ni opin le kọ init container ti o ni anfani patapata. Ti admission ba kọ pod naa, o mọ ni akoko ṣiṣẹda, eyi ti o kere ju jẹ otitọ ati rọrun lati ka.
Aṣayan ti o mọ julọ ni atokọ securityContext.sysctls ni ipele pod, eyi ti o gba kubelet laaye lati lo sysctl pẹlu namespace lai fun anfani si container eyikeyi. O bo awọn orukọ ninu atokọ igbanilaaye ẹgbẹ nikan. Boya net.ipv4.ip_forward wa ninu atokọ yẹn da lori bi kubelet ṣe ṣeto, ati pe pod ti o beere sysctl ni ita rẹ ni a kọ ni admission tabi o di ni CreateContainerConfigError nigba ti a tun gbiyanju sandbox. Ṣayẹwo atokọ igbanilaaye ki o to ro pe aaye naa ti bajẹ.
Ki o to kọ ọkan ninu awọn ọna mejeeji pẹlu ọwọ, wo boya chart ti fi switch han tẹlẹ, nigbagbogbo bi nkan bi ipForwardInitContainer: true. Lilo iye chart n jẹ ki faili override rẹ jẹ kekere ati pe o ye igbega ti o tẹle, eyi ti awọn atunṣe Deployment ti a fi ọwọ ṣe ko ṣe.
Idaji keji: ọna ipadabọ ati eto imulo
Gbigbe ti o ṣiṣẹ jẹ dandan, ko to. Ti awọn onibara ba lo adagun ikọkọ ti nẹtiwọọki ẹgbẹ ko ni ọna si, awọn idahun ko le wa ọna pada sinu ọna abẹla, ati pod gbọdọ bo ijabọ yẹn si ọna opin rẹ.
Eto imulo wa lori eyi. Awọn nkan NetworkPolicy ati awọn ofin firewall ti awọsanma ni a ṣe ayẹwo lodi si adirẹsi orisun ti apo n gbe lẹhin itumọ, nitorina ofin ti a kọ fun adagun onibara le dakẹ lati baamu ni kete ti a ba mu masking ṣiṣẹ.
Nigbati awọn onibara ba nilo lati de awọn iṣẹ inu ẹgbẹ nikan, pipari VPN ni VIP iṣẹ jẹ apẹrẹ kekere ju titọpa sinu nẹtiwọọki pod. O tun tọju adagun onibara kuro patapata ninu tabili ipa ti CNI.
Ya fifo ti o kuna kuro lọdọ onibara
Ṣiṣẹ si ita ki o duro ni igbese idakẹjẹ akọkọ. Bẹrẹ pẹlu peer VPN, lẹhinna gbiyanju adirẹsi pod kan, lẹhinna VIP iṣẹ, ati lẹhinna nikan opin gbangba. Gbogbo aṣeyọri n gbe aala fifo kan, ati gbogbo ikuna n darukọ Layer ti o tọ lati ṣayẹwo. Lẹhin eyikeyi imuṣiṣẹ, wọle pẹlu exec ki o ka sysctl lẹẹkansi, nitori pod ti a rọpo bẹrẹ lati aiyipada aworan ati atunṣe ti ko si ninu manifest tẹlẹ ti lọ.
Iwe Kubernetes nipa lilo sysctl ninu ẹgbẹ ṣe atokọ awọn orukọ ti a le ṣeto nipasẹ ipo aabo pod, ati pe o jẹ ibi akọkọ lati wo nigbati admission ba kọ iyipada naa.