Предоставление модуля kubernetes через сервис в натуральном кластере kubernetes

#docker #kubernetes #kind

#docker #kubernetes #вид

Вопрос:

Я следую руководству здесь (https://kubernetes.io/docs/tutorials/hello-minikube /) для тестирования локальной настройки разработки для kubernetes. Однако я использую kind вместо minikube.

На данный момент я застрял на шаге 3:

 minikube service hello-node
  

который должен предоставлять службу балансировки нагрузки.

Однако в kind, похоже, нет такой команды, и мне интересно, как бы я предоставил доступ к сервису из руководства.

Моя настройка представляет собой дистрибутив WSL2 с docker, kind и kubectl. Мои текущие мосты портов:

 $ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                       NAMES
b62c43ac3b2e        kindest/node:v1.17.0   "/usr/local/bin/entr…"   49 minutes ago      Up 49 minutes       127.0.0.1:32769->6443/tcp   kind-control-plane
  
 $ kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:32769
KubeDNS is running at https://127.0.0.1:32769/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  

и

 $ kubectl get services
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.96.65.157   <pending>     8080:31578/TCP   46m
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP          51m
  

Ответ №1:

LoadBalancer тип, который служба создает внутри NodePort . Таким образом, вы можете получить к нему доступ через, http://NODEIP:31578 где 31578 находится порт узла, как вы можете видеть в выводе kubectl get service . Чтобы получить NODEIP , вы можете использовать kubectl get nodes -o wide

Если вы посмотрите на вывод, minikube service hello-node он получил то же самое NODEIP и NODEPORT . К сожалению, в натуральном виде нет эквивалентной команды, поэтому вам нужно использовать метод, описанный выше.

EXTERNAL-IP будет ожидаться, поскольку в локальном кластере kind нет облачной (AWS, GCP, Azure) подобной реализации. Если вы действительно хотите заставить LoadBalancer тип service работать, вы можете использовать metallb в качестве реализации loadbalancer. Таким образом, вам будет EXTERNAL-IP назначен вместо pending и вы сможете использовать этот IP для доступа к модулю.

Вот руководство о том, как заставить metallb работать с kind.