VK Cloud logo

Кластердегі желі

Кластер ішіндегі DNS-сервер

Кластер ішіндегі CoreDNS сервері kube-dns орнына пайдаланылады. Бұл сервер кластер ішінде сервистерді анықтауды қамтамасыз етеді және оларға DNS атаулары арқылы жүгінуге мүмкіндік береді.

Сондай-ақ CoreDNS метрикаларды Prometheus жүйесіне экспорттайды, бұл кластерді мониторингтеу құралдары арқылы оның жұмысын бақылауға мүмкіндік береді.

Желілік ішкі жүйелермен жұмыс (CNI)

Cloud Containers сервисінде кластер ішіндегі желіні ұйымдастыру үшін екі желілік ішкі жүйе (CNI, Container Network Interface) қолдау табады:

  • Calico стандартты желілік хаттамалар мен iptables көмегімен L3 деңгейінде желілік маршруттауды жүзеге асырады. Calico жақсы масштабталады және орташа және ірі кластерлер үшін оңтайлы түрде қолайлы.

  • Cilium желілік саясаттар мен маршруттауды iptables-ті айналып өтіп, тікелей ОЖ ядросында жүзеге асыру үшін eBPF (Linux eXpress Data Path) пайдаланады. Cilium L3, L4 және L7 деңгейлерінде (мысалы, HTTP-тақырыптары бойынша) трафикті сүзуді қолдайды, сондай-ақ кеңейтілген мониторинг мүмкіндіктерін ұсынады (мысалы, кірістірілген Hubble құралы арқылы). Cilium жоғары жүктемелі және микросервистік архитектуралары бар өте үлкен кластерлер үшін оңтайлы түрде қолайлы.

Екі CNI де VK Cloud платформасымен меншікті әзірленген SDN Sprut бағдарламалық-анықталатын желісі арқылы өзара әрекеттеседі. SDN Sprut желісін жобаңызға қосу үшін техникалық қолдау қызметіне хабарласыңыз.

Жүктеме теңгергіштерімен интеграция

Kubernetes кластері VK Cloud платформасының жүктеме теңгергіштерімен интеграцияланады. Бұл Kubernetes-тің кәдімгі жүктеме теңгергіштеріне (LoadBalancer) де, Ingress-контроллерлерге (IngressController) де қатысты: екеуіне де жасау кезінде бөлінген VK Cloud TCP-теңгергіші байланыстырылатын болады. Бұл соның ішінде аддон түрінде орнатылатын Ingress-контроллерге де қатысты.

Қажет болған жағдайда HTTP жүктеме теңгергішін пайдалануға болады. Бұл туралы толығырақ Ingress-контроллерге арналған мысалда айтылған.

VK Cloud платформасының жүктеме теңгергіші OpenStack Octavia негізінде құрылған, оның негізінде HAProxy жатыр және ол мыналарды қолдайды:

  • HTTP және TCP қосылымдарын проксилеу және теңгерімдеу (соңғылары — соның ішінде proxy-протоколын қолдаумен);
  • HTTP/1.1-ге қосымша HTTP/2 қосылымдарын проксилеу және теңгерімдеу;
  • теңгергіште SSL қосылымдарын терминирлеу.

Істен шығуға төзімділік үшін теңгергіштің екі данасы қолдау табады, олардың біреуі active режимінде, ал екіншісі standby режимінде болады. Осы теңгергіштер арасындағы күйлерді синхрондау және трафикті ауыстыру VRRP хаттамасы көмегімен жүзеге асырылады. Кластер мұндай істен шығуға төзімді конфигурацияны бір теңгергіш ретінде қабылдайды.

Ingress-контроллер және пайдаланушының нақты IP-мекенжайын анықтау

Кейде Ingress-контроллерді пайдаланған кезде кластердегі подқа теңгергішке бастапқы сұрауды жіберген пайдаланушының нақты IP-мекенжайын көру қажет болады, ал теңгергіштің өзінің IP-мекенжайын емес. Бұл желілік қолданбалардың кейбір түрлері үшін маңызды болуы мүмкін.

Ingress-контроллер арқылы жұмыс істейтін под пайдаланушының нақты IP-мекенжайын көре алуы үшін келесі нұсқалардың бірін пайдаланыңыз:

  • Proxy-протоколын қолдайтын Ingress-контроллер.

    Егер HTTPS-трафикпен жұмыс істеу жоспарланса, SSL қосылымдарын осы Ingress-контроллерде терминирлеуді баптаңыз, себебі контроллер үшін жасалатын TCP-теңгергіш SSL қосылымдарын өздігінен терминирлей алмайды.

    VK Cloud ұсынатын NGINX негізіндегі Ingress-контроллер proxy-протоколын қолдайды және онымен жұмыс істеуге әлдеқашан бапталған.

  • Қосымша баптаулары бар бөлек HTTP(S)-теңгергіш:

    • Егер HTTPS-трафикпен жұмыс істеу жоспарланса, SSL қосылымдарын осы теңгергіште терминирлеуді баптаңыз.
    • Ingress-контроллерде ExternalTrafficPolicy: Local саясатын белсендіріңіз.

    Бұл жағдайда Ingress-контроллерге тек HTTP-трафик келіп түседі, онда барлық тақырыптар, соның ішінде жіберушінің IP-мекенжайы (егер бар болса) көрінетін болады.

Әдепкі желілік объектілер

Kubernetes кластерін жасау кезінде ол үшін бірнеше желілік объектілер жасалады.

Kubernetes API үшін жүктеме теңгергіші

Әрбір кластер үшін барлық master-түйіндерге арналған Kubernetes API-іне кіріс сұрауларын өңдейтін бөлінген TCP жүктеме теңгергіші жасалады. Кластерге қосылу және оны басқару осы теңгергіш арқылы жүзеге асырылады.

Қауіпсіздік топтарының ережелері

Әрбір кластер үшін ережелердің үш тобы жасалады:

  • <ИМЯ_КЛАСТЕРА>-base: master-түйіндер мен worker-түйіндер топтары арасындағы байланысты қамтамасыз етеді.
  • <ИМЯ_КЛАСТЕРА>-master: master-түйіндермен байланысты қамтамасыз етеді.
  • <ИМЯ_КЛАСТЕРА>-minion: worker-түйіндер топтары арасындағы байланысты қамтамасыз етеді.

Сондай-ақ қараңыз