புரோஹோஸ்டர் > Блог > நிர்வாகம் > தயாரிப்பில் குபெர்னெட்டஸைப் பயன்படுத்தி இஸ்டியோவை எவ்வாறு இயக்குவது. பகுதி 1
தயாரிப்பில் குபெர்னெட்டஸைப் பயன்படுத்தி இஸ்டியோவை எவ்வாறு இயக்குவது. பகுதி 1
என்ன இஸ்டியோ? இது சர்வீஸ் மெஷ் என்று அழைக்கப்படுகிறது, இது நெட்வொர்க்கில் சுருக்கத்தின் அடுக்கைச் சேர்க்கும் தொழில்நுட்பமாகும். கிளஸ்டரில் உள்ள போக்குவரத்தின் அனைத்து அல்லது பகுதியையும் இடைமறித்து, அதனுடன் ஒரு குறிப்பிட்ட செயல்பாடுகளைச் செய்கிறோம். எந்த ஒன்று? எடுத்துக்காட்டாக, நாங்கள் ஸ்மார்ட் ரூட்டிங் செய்கிறோம், அல்லது சர்க்யூட் பிரேக்கர் அணுகுமுறையை செயல்படுத்துகிறோம், "கேனரி வரிசைப்படுத்தலை" ஒழுங்கமைக்கலாம், சேவையின் புதிய பதிப்பிற்கு போக்குவரத்தை ஓரளவு மாற்றலாம் அல்லது வெளிப்புற தொடர்புகளை கட்டுப்படுத்தலாம் மற்றும் கிளஸ்டரில் இருந்து அனைத்து பயணங்களையும் கட்டுப்படுத்தலாம். வெளிப்புற நெட்வொர்க். வெவ்வேறு மைக்ரோ சர்வீஸ்களுக்கு இடையே பயணங்களைக் கட்டுப்படுத்த கொள்கை விதிகளை அமைக்கலாம். இறுதியாக, நாம் முழு நெட்வொர்க் தொடர்பு வரைபடத்தையும் பெறலாம் மற்றும் அளவீடுகளின் ஒருங்கிணைந்த தொகுப்பை பயன்பாடுகளுக்கு முற்றிலும் வெளிப்படையானதாக மாற்றலாம்.
வேலையின் பொறிமுறையைப் பற்றி நீங்கள் படிக்கலாம் அதிகாரப்பூர்வ ஆவணங்கள். இஸ்டியோ என்பது மிகவும் சக்திவாய்ந்த கருவியாகும், இது பல பணிகளையும் சிக்கல்களையும் தீர்க்க உங்களை அனுமதிக்கிறது. இந்த கட்டுரையில், இஸ்டியோவுடன் தொடங்கும் போது பொதுவாக எழும் முக்கிய கேள்விகளுக்கு பதிலளிக்க விரும்புகிறேன். இது விரைவாக சமாளிக்க உதவும்.
இது எப்படி வேலை
இஸ்டியோ இரண்டு முக்கிய பகுதிகளைக் கொண்டுள்ளது - கட்டுப்பாட்டு விமானம் மற்றும் தரவு விமானம். கட்டுப்பாட்டு விமானம் மீதமுள்ளவற்றின் சரியான செயல்பாட்டை உறுதி செய்யும் முக்கிய கூறுகளைக் கொண்டுள்ளது. தற்போதைய பதிப்பில் (1.0) கட்டுப்பாட்டு விமானம் மூன்று முக்கிய கூறுகளைக் கொண்டுள்ளது: பைலட், மிக்சர், சிட்டாடெல். நாங்கள் சிட்டாடலைக் கருத்தில் கொள்ள மாட்டோம், சேவைகளுக்கு இடையே பரஸ்பர TLS ஐ உறுதிப்படுத்த சான்றிதழ்களை உருவாக்குவது அவசியம். பைலட் மற்றும் மிக்சரின் சாதனம் மற்றும் நோக்கத்தை இன்னும் விரிவாகப் பார்ப்போம்.
பைலட் என்பது கிளஸ்டரில் உள்ளவை - சேவைகள், அவற்றின் இறுதிப்புள்ளிகள் மற்றும் ரூட்டிங் விதிகள் (உதாரணமாக, கேனரி வரிசைப்படுத்தல் அல்லது சர்க்யூட் பிரேக்கர் விதிகள்) பற்றிய அனைத்து தகவல்களையும் விநியோகிக்கும் முக்கிய கட்டுப்பாட்டு கூறு ஆகும்.
மிக்சர் என்பது ஒரு விருப்பமான கட்டுப்பாட்டு விமான கூறு ஆகும், இது அளவீடுகள், பதிவுகள் மற்றும் நெட்வொர்க் தொடர்பு பற்றிய எந்த தகவலையும் சேகரிக்கும் திறனை வழங்குகிறது. கொள்கை விதிகளுக்கு இணங்குவதையும், விகித வரம்புகளுக்கு இணங்குவதையும் அவர் கண்காணிக்கிறார்.
சைட்கார் ப்ராக்ஸி கொள்கலன்களைப் பயன்படுத்தி தரவுத் தளம் செயல்படுத்தப்படுகிறது. சக்தி வாய்ந்தது முன்னிருப்பாகப் பயன்படுத்தப்படுகிறது. தூதுவர் பதிலாள். இது nginx (nginmesh) போன்ற மற்றொரு செயலாக்கத்தால் மாற்றப்படலாம்.
இஸ்டியோ பயன்பாடுகளுக்கு முற்றிலும் வெளிப்படையானதாக செயல்பட, ஒரு தானியங்கி ஊசி அமைப்பு உள்ளது. சமீபத்திய செயலாக்கமானது குபெர்னெட்டஸ் 1.9+ பதிப்புகளுக்கு ஏற்றது (பரஸ்பர சேர்க்கை வெப்ஹூக்). குபெர்னெட்டஸ் பதிப்புகள் 1.7, 1.8க்கு இனிஷியலைசரைப் பயன்படுத்த முடியும்.
GRPC நெறிமுறையைப் பயன்படுத்தி சைட்கார் கொள்கலன்கள் பைலட்டுடன் இணைக்கப்பட்டுள்ளன, இது கிளஸ்டரில் ஏற்படும் மாற்றங்களுக்கான புஷ் மாதிரியை மேம்படுத்த உங்களை அனுமதிக்கிறது. GRPC ஆனது Envoy இல் பதிப்பு 1.6 இலிருந்து பயன்படுத்தப்படுகிறது, Istio இல் இது பதிப்பு 0.8 இலிருந்து பயன்படுத்தப்படுகிறது மற்றும் இது ஒரு பைலட்-ஏஜெண்ட் - இது வெளியீட்டு விருப்பங்களை உள்ளமைக்கும் தூதுவர் மீது கோலாங் ரேப்பர் ஆகும்.
பைலட் மற்றும் மிக்சர் முற்றிலும் நிலையற்ற கூறுகள், அனைத்து நிலைகளும் நினைவகத்தில் வைக்கப்படுகின்றன. அவற்றுக்கான உள்ளமைவு குபெர்னெட்ஸ் தனிப்பயன் வளங்களின் வடிவத்தில் அமைக்கப்பட்டுள்ளது, அவை முதலியன சேமிக்கப்படுகின்றன.
இஸ்டியோ-ஏஜெண்ட் பைலட்டின் முகவரியைப் பெற்று, அதற்கு ஜிஆர்பிசி ஸ்ட்ரீமைத் திறக்கிறார்.
நான் கூறியது போல், பயன்பாடுகளுக்கு முற்றிலும் வெளிப்படையான அனைத்து செயல்பாடுகளையும் Istio செயல்படுத்துகிறது. எப்படி என்று பார்க்கலாம். அல்காரிதம் இது:
சேவையின் புதிய பதிப்பைப் பயன்படுத்துதல்.
சைட்கார் கொள்கலன் உட்செலுத்துதல் அணுகுமுறையைப் பொறுத்து, istio-init கொள்கலன் மற்றும் istio-ஏஜெண்ட் கொள்கலன் (தூதுவர்) ஆகியவை உள்ளமைவைப் பயன்படுத்தும் கட்டத்தில் சேர்க்கப்படும் அல்லது அவை ஏற்கனவே கைமுறையாக குபெர்னெட்ஸ் பாட் நிறுவனத்தின் விளக்கத்தில் செருகப்படலாம்.
istio-init கன்டெய்னர் என்பது iptables விதிகளை பாட்க்கு பொருந்தும் ஸ்கிரிப்ட் ஆகும். ஒரு istio-agent கண்டெய்னரில் ட்ராஃபிக்கைக் கட்டமைக்க இரண்டு விருப்பங்கள் உள்ளன: iptables வழிமாற்று விதிகளைப் பயன்படுத்தவும் அல்லது TPROXY. எழுதும் நேரத்தில், இயல்புநிலை அணுகுமுறை வழிமாற்று விதிகளுடன் உள்ளது. istio-init இல், எந்த போக்குவரத்தை இடைமறித்து istio-agent க்கு அனுப்ப வேண்டும் என்பதை உள்ளமைக்க முடியும். எடுத்துக்காட்டாக, அனைத்து உள்வரும் மற்றும் வெளிச்செல்லும் போக்குவரத்தை இடைமறிக்க, நீங்கள் அளவுருக்களை அமைக்க வேண்டும் -i и -b அர்த்தத்தில் *. குறுக்கிட குறிப்பிட்ட துறைமுகங்களை நீங்கள் குறிப்பிடலாம். ஒரு குறிப்பிட்ட சப்நெட்டை இடைமறிக்காமல் இருக்க, கொடியைப் பயன்படுத்தி அதைக் குறிப்பிடலாம் -x.
init கொள்கலன்கள் செயல்படுத்தப்பட்ட பிறகு, பைலட்-ஏஜெண்ட் (தூதுவர்) உட்பட பிரதானமானவை தொடங்கப்படுகின்றன. இது GRPC வழியாக ஏற்கனவே பணியமர்த்தப்பட்ட பைலட்டுடன் இணைக்கிறது மற்றும் கிளஸ்டரில் இருக்கும் அனைத்து சேவைகள் மற்றும் ரூட்டிங் கொள்கைகள் பற்றிய தகவலைப் பெறுகிறது. பெறப்பட்ட தரவுகளின்படி, அவர் கிளஸ்டர்களை உள்ளமைத்து, குபெர்னெட்ஸ் கிளஸ்டரில் உள்ள எங்கள் பயன்பாடுகளின் இறுதிப் புள்ளிகளுக்கு நேரடியாக அவற்றை ஒதுக்குகிறார். ஒரு முக்கியமான விஷயத்தையும் கவனிக்க வேண்டியது அவசியம்: அது கேட்கத் தொடங்கும் கேட்போரை (ஐபி, போர்ட் ஜோடிகள்) தூதர் மாறும் வகையில் கட்டமைக்கிறது. எனவே, கோரிக்கைகள் பாட்க்குள் நுழையும் போது, சைட்காரில் உள்ள ரீடைரக்ட் iptables விதிகளைப் பயன்படுத்தி திருப்பி விடப்படும், தூதர் ஏற்கனவே இந்த இணைப்புகளை வெற்றிகரமாகச் செயல்படுத்தி, மேலும் போக்குவரத்தை எங்குப் பதிலளிப்பது என்பதைப் புரிந்து கொள்ள முடியும். இந்த கட்டத்தில், தகவல் மிக்சருக்கு அனுப்பப்படுகிறது, அதை நாங்கள் பின்னர் பார்ப்போம், மேலும் டிரேசிங் ஸ்பான்கள் அனுப்பப்படுகின்றன.
இதன் விளைவாக, ஒரு புள்ளியிலிருந்து (பைலட்) உள்ளமைக்கக்கூடிய தூதர் ப்ராக்ஸி சேவையகங்களின் முழு நெட்வொர்க்கையும் நாங்கள் பெறுகிறோம். அனைத்து உள்வரும் மற்றும் வெளிச்செல்லும் கோரிக்கைகள் தூதுவர் மூலம் செல்கின்றன. மேலும், TCP போக்குவரத்து மட்டுமே இடைமறிக்கப்படுகிறது. இதன் பொருள், குபெர்னெட்ஸ் சேவை ஐபி மாறாமல் UDP மூலம் kube-dns ஐப் பயன்படுத்தி தீர்க்கப்படுகிறது. பின்னர், தீர்வுக்குப் பிறகு, வெளிச்செல்லும் கோரிக்கையானது தூதுவரால் இடைமறித்து செயலாக்கப்படுகிறது, இது கோரிக்கையை எந்த இறுதிப் புள்ளிக்கு அனுப்ப வேண்டும் என்பதை ஏற்கனவே தீர்மானிக்கிறது (அல்லது அணுகல் கொள்கைகள் அல்லது அல்காரிதம் சர்க்யூட் பிரேக்கர் விஷயத்தில் அனுப்பப்படவில்லை).
நாங்கள் பைலட்டைக் கண்டுபிடித்தோம், இப்போது மிக்சர் எவ்வாறு செயல்படுகிறது மற்றும் அது ஏன் தேவைப்படுகிறது என்பதைப் புரிந்து கொள்ள வேண்டும். அதற்கான அதிகாரப்பூர்வ ஆவணங்களை நீங்கள் படிக்கலாம் இங்கே.
மிக்சர் அதன் தற்போதைய வடிவத்தில் இரண்டு கூறுகளைக் கொண்டுள்ளது: இஸ்டியோ-டெலிமெட்ரி, இஸ்டியோ-பாலிசி (பதிப்பு 0.8 க்கு முன் இது ஒரு இஸ்டியோ-மிக்சர் கூறு). அவை இரண்டும் மிக்சர்கள், ஒவ்வொன்றும் அதன் சொந்த பணிக்கு பொறுப்பாகும். ஜிஆர்பிசி வழியாக சைட்கார் ரிப்போர்ட் கன்டெய்னர்களில் இருந்து யார் எங்கு, என்ன அளவுருக்களுடன் செல்கிறார்கள் என்பது பற்றிய தகவலை இஸ்டியோ டெலிமெட்ரி பெறுகிறது. கொள்கை விதிகள் திருப்திகரமாக உள்ளதா என்பதைச் சரிபார்க்க சரிபார்ப்புக் கோரிக்கைகளை Istio-policy ஏற்றுக்கொள்கிறது. கொள்கைச் சரிபார்ப்புகள், நிச்சயமாக, ஒவ்வொரு கோரிக்கைக்கும் மேற்கொள்ளப்படுவதில்லை, ஆனால் ஒரு குறிப்பிட்ட நேரத்திற்கு கிளையண்டில் (சைட்காரில்) தற்காலிகமாக சேமிக்கப்படும். அறிக்கை காசோலைகள் தொகுதி கோரிக்கைகளாக அனுப்பப்படுகின்றன. எப்படி கட்டமைப்பது மற்றும் என்ன அளவுருக்கள் சிறிது நேரம் கழித்து அனுப்பப்பட வேண்டும் என்பதைப் பார்ப்போம்.
மிக்சர், டெலிமெட்ரி தரவை அசெம்ப்ளி மற்றும் செயலாக்கத்தில் தடையின்றி வேலை செய்வதை உறுதி செய்யும் மிகவும் கிடைக்கக்கூடிய அங்கமாக இருக்க வேண்டும். பல நிலை இடையகத்தின் விளைவாக கணினி பெறப்படுகிறது. ஆரம்பத்தில், டேட்டா கன்டெய்னர்களின் சைட்கார் பக்கத்திலும், பின்னர் மிக்சர் பக்கத்திலும் இடையகப்படுத்தப்பட்டு, பின்னர் மிக்சர் பேக்கெண்டுகள் என அழைக்கப்படும் பகுதிகளுக்கு அனுப்பப்படும். இதன் விளைவாக, கணினி கூறுகளில் ஏதேனும் தோல்வியுற்றால், இடையகமானது வளர்ந்து, கணினி மீட்டமைக்கப்பட்ட பிறகு சுத்தப்படுத்தப்படுகிறது. மிக்சர் பின்தளங்கள் டெலிமெட்ரி தரவை அனுப்புவதற்கான இறுதிப்புள்ளிகளாகும்: statsd, newrelic போன்றவை. உங்கள் சொந்த பின்தளத்தை நீங்கள் எழுதலாம், இது மிகவும் எளிமையானது, அதை எப்படி செய்வது என்று பார்ப்போம்.
சுருக்கமாக, istio-telemetry உடன் பணிபுரியும் திட்டம் பின்வருமாறு.
சேவை 1 சேவை 2 க்கு கோரிக்கையை அனுப்புகிறது.
சேவை 1 ஐ விட்டு வெளியேறும்போது, கோரிக்கை அதன் சொந்த பக்க காரில் மூடப்பட்டிருக்கும்.
சேவை 2 க்கு கோரிக்கை எவ்வாறு செல்கிறது என்பதை சைட்கார் தூதர் கண்காணித்து தேவையான தகவல்களைத் தயாரிக்கிறார்.
பின்னர் அறிக்கை கோரிக்கையைப் பயன்படுத்தி istio-telemetry க்கு அனுப்புகிறது.
இந்த அறிக்கை பின்தளங்களுக்கு அனுப்பப்பட வேண்டுமா, எதற்கு, எந்தத் தரவை அனுப்ப வேண்டும் என்பதை இஸ்டியோ-டெலிமெட்ரி தீர்மானிக்கிறது.
தேவைப்பட்டால், இஸ்டியோ-டெலிமெட்ரி அறிக்கை தரவை பின்தளத்திற்கு அனுப்புகிறது.
முக்கிய கூறுகளை (பைலட் மற்றும் சைட்கார் தூதுவர்) மட்டுமே கொண்ட அமைப்பில் இஸ்டியோவை எவ்வாறு வரிசைப்படுத்துவது என்று இப்போது பார்ப்போம்.
முதலில், பைலட் படிக்கும் முக்கிய உள்ளமைவை (மெஷ்) பார்ப்போம்:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio
namespace: istio-system
labels:
app: istio
service: istio
data:
mesh: |-
# пока что не включаем отправку tracing информации (pilot настроит envoy’и таким образом, что отправка не будет происходить)
enableTracing: false
# пока что не указываем mixer endpoint’ы, чтобы sidecar контейнеры не отправляли информацию туда
#mixerCheckServer: istio-policy.istio-system:15004
#mixerReportServer: istio-telemetry.istio-system:15004
# ставим временной промежуток, с которым будет envoy переспрашивать Pilot (это для старой версии envoy proxy)
rdsRefreshDelay: 5s
# default конфигурация для envoy sidecar
defaultConfig:
# аналогично как rdsRefreshDelay
discoveryRefreshDelay: 5s
# оставляем по умолчанию (путь к конфигурации и бинарю envoy)
configPath: "/etc/istio/proxy"
binaryPath: "/usr/local/bin/envoy"
# дефолтное имя запущенного sidecar контейнера (используется, например, в именах сервиса при отправке tracing span’ов)
serviceCluster: istio-proxy
# время, которое будет ждать envoy до того, как он принудительно завершит все установленные соединения
drainDuration: 45s
parentShutdownDuration: 1m0s
# по умолчанию используются REDIRECT правила iptables. Можно изменить на TPROXY.
#interceptionMode: REDIRECT
# Порт, на котором будет запущена admin панель каждого sidecar контейнера (envoy)
proxyAdminPort: 15000
# адрес, по которому будут отправляться trace’ы по zipkin протоколу (в начале мы отключили саму отправку, поэтому это поле сейчас не будет использоваться)
zipkinAddress: tracing-collector.tracing:9411
# statsd адрес для отправки метрик envoy контейнеров (отключаем)
# statsdUdpAddress: aggregator:8126
# выключаем поддержку опции Mutual TLS
controlPlaneAuthPolicy: NONE
# адрес, на котором будет слушать istio-pilot для того, чтобы сообщать информацию о service discovery всем sidecar контейнерам
discoveryAddress: istio-pilot.istio-system:15007
அனைத்து முக்கிய கட்டுப்பாட்டு கூறுகளும் (கட்டுப்பாட்டு விமானம்) குபெர்னெட்டஸில் உள்ள பெயர்வெளி istio-அமைப்பில் அமைந்திருக்கும்.
குறைந்தபட்சம், நாங்கள் பைலட்டை மட்டுமே பயன்படுத்த வேண்டும். இதற்காக நாம் பயன்படுத்துவோம் அத்தகைய கட்டமைப்பு.
எல்லாவற்றையும் வெற்றிகரமாகத் தொடங்க, நீங்கள் ஒரு சர்வீஸ் அக்கவுண்ட், க்ளஸ்டர்ரோல், கிளஸ்டர்ரோல்பைண்டிங், சிஆர்டி பைலட்டிற்கான விளக்கங்களை உருவாக்க வேண்டும். இங்கே.
இதன் விளைவாக, நாங்கள் தூதுவருடன் சைட்காரைச் செலுத்தும் சேவை வெற்றிகரமாகத் தொடங்க வேண்டும், பைலட்டிடமிருந்து அனைத்து கண்டுபிடிப்புகளையும் செயல்முறை கோரிக்கைகளையும் பெற வேண்டும்.
அனைத்து கட்டுப்பாட்டு விமான கூறுகளும் நிலையற்ற பயன்பாடுகள் மற்றும் சிக்கல்கள் இல்லாமல் கிடைமட்டமாக அளவிடப்படலாம் என்பதைப் புரிந்துகொள்வது அவசியம். குபெர்னெட்ஸ் வளங்களின் தனிப்பயன் விளக்கங்களின் வடிவத்தில் எல்லா தரவும் etcd இல் சேமிக்கப்படும்.
மேலும், இஸ்டியோ (இன்னும் பரிசோதனை) க்ளஸ்டருக்கு வெளியே இயங்கும் திறன் மற்றும் பல குபெர்னெட்ஸ் கிளஸ்டர்களுக்கு இடையே சேவை கண்டுபிடிப்பை பார்த்து தடுமாறக்கூடிய திறனைக் கொண்டுள்ளது. இதைப் பற்றி மேலும் படிக்கலாம் இங்கே.
பல-கிளஸ்டர் நிறுவலுக்கு, பின்வரும் வரம்புகளைப் பற்றி எச்சரிக்கையாக இருங்கள்:
பாட் சிஐடிஆர் மற்றும் சர்வீஸ் சிஐடிஆர் அனைத்து கிளஸ்டர்களிலும் தனித்துவமாக இருக்க வேண்டும் மற்றும் ஒன்றுடன் ஒன்று இருக்கக்கூடாது.
அனைத்து CIDR காய்களும் கிளஸ்டர்களுக்கு இடையே உள்ள எந்த CIDR காய்களிலிருந்தும் அணுகக்கூடியதாக இருக்க வேண்டும்.
அனைத்து Kubernetes API சேவையகங்களும் ஒருவருக்கொருவர் அணுகக்கூடியதாக இருக்க வேண்டும்.
இஸ்டியோவைத் தொடங்க உங்களுக்கு உதவும் ஆரம்பத் தகவல் இதுவாகும். இருப்பினும், இன்னும் பல குறைபாடுகள் உள்ளன. எடுத்துக்காட்டாக, வெளிப்புற போக்குவரத்தை வழிநடத்துதல் (கிளஸ்டருக்கு வெளியே), சைட்கார்களை பிழைத்திருத்துவதற்கான அணுகுமுறைகள், விவரக்குறிப்பு, மிக்சரை அமைத்தல் மற்றும் தனிப்பயன் மிக்சர் பின்தளத்தில் எழுதுதல், டிரேசிங் பொறிமுறையை அமைத்தல் மற்றும் தூதரைப் பயன்படுத்தி அதன் செயல்பாடு.
இவை அனைத்தையும் பின்வரும் வெளியீடுகளில் கருத்தில் கொள்வோம். உங்கள் கேள்விகளைக் கேளுங்கள், நான் அவற்றை மறைக்க முயற்சிப்பேன்.