Архив рубрики: Networking

Вопросы, касающиеся работы сетей, сетевых протоколов и оборудования.

Istio: интеграция Ingress Gateway с AWS Application LoadBalancer

26 марта 2021
 

 В предыдущем посте – Istio: обзор и запуск service mesh в Kubernetes – запустили Istio в AWS Elastic Kubernetes Service, познакомились с основными компонентами. Следующая задача – добавить AWS Application Load Balancer (ALB) перед Istio Inrgress Gateway, так как Istio Gateway Service с типом LoadBalancer создаёт AWS Classic LoadBalancer, к которому можно подключить только один… Читать далее »

Istio: обзор и запуск service mesh в Kubernetes

24 марта 2021
 

 Istio- одна из реализацией концепии Service Mesh, позволяющая реализовать Service Discovery, Load Balancing, контроль над трафиком, canary rollouts и blue-green deployments, мониторить трафик между приложениями. Мы будем использовать Istio в AWS Elastic Kubernetes Service для мониторинга трафика, в роли API gateway, разграничения трафика и, возможно, для реализации различных deployment strategies. В этом посте рассмотрим что… Читать далее »

Kubernetes: что такое Endpoints

13 марта 2021
 

 Практически все знают, что такое Kubernetes Service, но не все могут быть в курсе, что такое Endpoint, так как обычно он работает “за кулисами”, и мы его не видим, аналогично тому, как мы пользуемся Deployment, но редко видим ReplicaSet-ы. Kubernetes Service Итак, Service – это абстракция Kubernetes, которая, используя labels, выбирает поды, на которые следует… Читать далее »

Ansible: модуль community.kubernetes и установка Helm-чарта с ExternalDNS

24 ноября 2020
 

 В посте Kubernetes: обновление DNS в Route53 при создании Ingress выполнили ручную установку ExternalDNS, и посмотрели, как он работает – пора добавить автоматизацию его установки на кластера. В роли Configuration Management Tool у нас используется Ansible, для которого существует модуль community.kubernetes – используем его. Вообще, есть много модулей для работы с Helm, например – helm… Читать далее »

Kubernetes: обновление DNS в Route53 при создании Ingress

14 ноября 2020
 

 Задача: при создании Ingress ресурса – создавать запись на DNS, которая будет привязана к URL создаваемого Ingress, потому что сейчас это приходится делать руками для каждого нового Application Load Balancer, который создаётся из Ingress через ALB Ingress controller. Для решения – используем ExternalDNS, который будет ходить в наш AWS Route53, и добавлять записи. Документация на… Читать далее »

Kubernetes: Service, балансировка нагрузки, kube-proxy и iptables

30 октября 2020
 

 Задался я вопросом – а как вообще в Kubernetes происходит балансировка нагрузки между подами? Т.е, есть у нас внешний Load Balancer. За ним – Service. За ним – Pod. Что происходит, когда мы из мира получаем пакет, а у нас несколько подов – как пакеты между ними распределяются? kube-proxy За правила маршрутизации пакетов между Service… Читать далее »

AWS: Glue – ошибка AWS S3 connect timed out, и cross-region connections

22 октября 2020
 

 Есть AWS Glue job, которая должна загрузить данные в AWS S3 в другом регионе. Джоба падает с ошибкой: ERROR [Executor task launch worker for task 39] executor.Executor (Logging.scala:logError(91)): Exception in task 6.1 in stage 2.0 (TID 39) com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to projectname-dwh.s3.eu-west-1.amazonaws.com:443 [projectname-dwh.s3.eu-west-1.amazonaws.com/52.218.112.104] failed: connect timed out Причину искал долго, потому… Читать далее »

Kubernetes: нагрузочное тестирование и high-load тюнинг – проблемы и решения

25 августа 2020
 

 Вообще, этот пост планировался в виде небольшой заметки о том, как использовать NodeAffinity для Kubernetes Pod: Но, как это часто бывает – за одним потянулось другое, за другим третье – и в результате вышел очередной длиннопост в свободном стиле. Итак, собирался я написать про NodeAffinity, как вдруг подумал – а как будет себя вести Kubernetes… Читать далее »

Kubernetes: 503 no endpoints available for service – причины и решения

15 июня 2020
 

 Имеется Redis, для которого создан Service типа ClusterIP. К этому Редису должны ходить поды этого неймспейса (Gorush).   Проблема в том, что поды с Gorush подключиться к Redis по адресу gorush-server-redis-svc:6379 не могут – отваливаются с ошибкой “Can’t connect redis server: connection refused“: [simterm] $ kk -n gorush-test logs gorush-server-55cd659dff-9wfbw time=”2020/06/12 – 13:44:02″ level=debug msg=”Init… Читать далее »

Kubernetes: ClusterIP vs NodePort vs LoadBalancer, Services и Ingress – обзор, примеры

4 июня 2020
 

 Для сетевого взаимодействия Kubernetes предоставляет четыре типа Service-ресурсов – ClusterIP (дефолтный), NodePort, LoadBalancer и ExternalName, плюс ресурс Ingress. В этом посте разберём каждый из них, и попробуем их в работе. Документация по типам – Publishing Services (ServiceTypes). Рассматривается в основном AWS, потому учитываем, что сеть у нас – AWS VPC, балансировщики нагрузки – AWS ALB/CLB,… Читать далее »