«Это» - все о сфере видимости. Каждая функция имеет свою собственную область действия, и поскольку все в JS является объектом, даже функция может хранить некоторые значения в себе, используя «это». ООП 101 учит, что «это» применимо только к экземплярам объекта. Поэтому каждый раз, когда выполняет функция, новый «экземпляр» этой функции имеет новое значение «this».
Большинство людей путаются, когда пытаются использовать «это» внутри анонимных функций закрытия например:
(function(value) { this.value = value; $('.some-elements').each(function(elt){ elt.innerHTML = this.value; // uh oh!! possibly undefined }); })(2);
Итак, внутри each (), «this» не содержит «значение», которое вы ожидаете от него (от
this.value = value;над ним). Итак, чтобы справиться с этой проблемой (без каламбуры), разработчик мог:
(function(value) { var self = this; // small change self.value = value; $('.some-elements').each(function(elt){ elt.innerHTML = self.value; // phew!! == 2 }); })(2);
попробовать; вам понравится эта схема программирования
Как только служба NodePort привязана к указанным портам на всех узлах кластера, вам просто нужно доставить трафик на любой из этих узлов или на все из них. Иногда это может привести к дополнительной задержке, но с точки зрения подключения она должна работать нормально.
Вы можете настроить Load Balancer вручную, а затем добавить все узлы кластера в свой пул и настроить проверяет их, чтобы исключить узел из пула, когда конкретный узел выходит из строя.
Ingress работает аналогичным образом. Весь трафик, который поступает на определенный порт любого узла, перенаправляется в Ingress pod . Ingress controller ищет созданные объекты Ingress и настраивает Ingress pod в соответствии со спецификациями этих объектов. На самом деле, Ingress controller и Ingress pod в моем примере - это одно и то же.
Ingress может предоставить дополнительную логику управления трафиком на уровне HTTP, например маршрутную маршрутизацию, настроить запрос перед отправкой в службу, обслуживая конечную точку SSL и т. д. Но в любом случае вам следует доставить внешние трафик к узлам как-то. На этом этапе мы возвращаемся к конфигурации Load Balancer .
В некоторых случаях, когда ваш кластер развертывается в облаке, который предоставляет службу Load Balancer , контроллер Ingress заботится о создании облачного Load Balancer .
Вы использовали kops для развертывания кластера Kubernetes на AWS?
Как правило, kops создает кластер, который интегрируется с AWS без каких-либо проблем, поэтому вы можете использовать тип сервиса LoadBalancer. Выполняя все вручную, вы можете совершить небольшую ошибку конфигурации, которую трудно найти и исправить.
Пожалуйста, ознакомьтесь с очень хорошей статьей:
Как создать Ingress на AWS: