Kubernetes NodePort / Балансировщик нагрузки / Вход на установку с несколькими мастерами: необходимо ли это?
Я довольно новичок в этом, но я настраиваю кластер Kubernetes с несколькими мастерами и высокой доступностью, по крайней мере, с 3 мастерами и переменным числом узлов. Я пытаюсь сделать это БЕЗ использования Kube-Spray или каких-либо других инструментов, чтобы узнать истинные взлеты и падения. Я чувствую, что у меня почти все, кроме одного:
Мое понимание таково:
- NodePort выделяет порт для конкретной службы
- Балансировщик нагрузки - это внешний ресурс, который обеспечивает внешний доступ
- Ingress Controller позволяет вам настраивать определенные пути к сервисам и портам.
Некоторые моменты о моем кластере:
- Развернутые мной модули могут работать на любой машине в кластере и не должны быть доступны извне.
- Мои мастера также являются рабочими узлами и могут запускать модули
- etcd работает на каждом мастере
У меня вопрос, нужен ли контроллер NodePort/LB/Ingress? Я пытаюсь понять, зачем мне нужно что-то из вышеперечисленного. Если мастер присоединяется к существующему кластеру вместе с другим мастером, модули распределяются между ними, верно? Разве это не все, что мне нужно? Пожалуйста, помогите мне понять, так как мне не хватает ключевой концепции.
1 ответ
Прежде всего NodePort, LoadBalancer и Ingress не имеют ничего общего с настройкой кластера kubernetes. Эти три являются инструментами для представления ваших приложений внешнему миру, чтобы вы могли получить доступ к этим приложениям за пределами кластера kubernetes.
Здесь есть две части:
- Настройка высокодоступного кластера kubernetes с тремя мастерами. Я написал блог о том, как настроить кластер с несколькими мастерами в kubernetes, он даст вам краткое представление о том, как настроить кластер с несколькими мастерами в kubernetes.
https://velotio.com/blog/2018/6/15/kubernetes-high-availability-kubeadm
- Теперь, когда у вас есть готовый кластер kubernetes, вы можете начать развертывать на нем свои приложения (модули, службы и т. Д.). Те приложения, которые вы развертываете, могут быть подвержены влиянию внешнего мира, например, веб-сайт, размещенный в вашем кластере kubernetes и доступ к нему из Интернета. Тогда эти NodePort, Loadbalancer или Ingress входят в картину. Разница между NodePort, LoadBalancer и Ingress и когда использовать что? очень хорошо объясняется в этой статье здесь.
Надеюсь, это даст вам некоторую ясность.
РЕДАКТИРОВАТЬ: Это редактирование для файла конфигурации kubeadm для 1.13(см. Комментарии)
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
apiServer:
certSANs:
- "VIRTUAL IP"
controlPlaneEndpoint: "VIRTUAL IP"
etcd:
external:
endpoints:
- https://ETCD_0_IP:2379
- https://ETCD_1_IP:2379
- https://ETCD_2_IP:2379
caFile: /etc/kubernetes/pki/etcd/ca.crt
certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
keyFile: /etc/kubernetes/pki/apiserver-etcd-client.key