Как использовать kops для создания кластера Kubernetes на AWS без использования сервиса ELB?

Я только изучаю Kubernetes и хотел бы не тратить деньги на Elastic Load Balancing, когда запускаю его на AWS.

Вот команда, которую я использую для установки Kubernetes:

kops create cluster \
    --cloud aws \
    --name ${MY_KUBE_NAME}.k8s.local \
    --state s3://${MY_KUBE_NAME} \
    --master-count 1 \
    --master-size ${MY_KUBE_MASTER_AWS_INSTANCE_SIZE} \
    --master-volume-size ${MY_KUBE_MASTER_AWS_VOLUME_SIZE} \
    --master-zones ${MY_KUBE_AWS_ZONE} \
    --zones ${MY_KUBE_AWS_ZONE} \
    --node-count 1 \
    --node-size ${MY_KUBE_WORKER_AWS_INSTANCE_SIZE} \
    --node-volume-size ${MY_KUBE_WORKER_AWS_VOLUME_SIZE}

После выполнения этой команды я вижу, что балансировщик нагрузки создается через сервис Amazon ELB.

Вообще то у меня все хорошо работало и тогда я мог использовать kubectl для мониторинга и управления моим кластером, а также с его помощью установить Kubernetes Dashboard. Но мне не нравится то, что kops использует ELB. Вначале это было нормально, и я использовал URL, предоставленный балансировщиком нагрузки, для доступа к панели управления. Теперь я считаю, что могу избежать использования ELB для сокращения своих расходов на AWS. Подскажите, пожалуйста, как я могу использовать kops create cluster без какого-либо ELB, но все еще быть в состоянии подключиться к моему кластеру и приборной панели с моей локальной машины?

1 ответ

Решение

LB необходим для связи с куб-аписервером, который работает на мастере. Вы можете обойти это, удалив ELB из консоли AWS и изменив свои настройки, чтобы напрямую общаться с публичным или частным IP-адресом вашего мастера. Возможно, вам придется перевыпустить сертификаты на главном, чтобы вы могли общаться с новым IP-адресом. Копс создает ELB, потому что это больше стандартная готовая практика, а также она совместима, если у вас более одного мастера. Другими словами, все еще рекомендуется иметь этот ELB.

Что касается панели мониторинга, то, как правило, эта панель представлена ​​как служба LoadBalancer Kubernetes в AWS, которая создает ELB. Вы можете просто удалить сервис и балансировщик нагрузки должен быть удален.

$ kubectl delete svc <your-dashboard-svc>

Теперь, если вы хотите избежать создания балансировщика нагрузки в службе, просто создайте службу с помощью ClusterIP или NodePort. Тогда вы можете получить доступ к своему сервису, используя что-то вроде kubectl proxy,

Другие вопросы по тегам