Как использовать 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
,