Сервис Kubernetes LoadBalancer не работает - PullRequest
0 голосов
/ 25 сентября 2019

Я только начинаю с kubernetes и имею общее представление об этом.Я создал кластер на своей локальной машине, используя kubeadm с двумя узлами и одной главной виртуальной машиной.

Я создал простое развертывание и службу LoadBalancer в качестве эталона, используя эту конфигурацию.

apiVersion: v1
kind: Service
metadata:
  name: helloworld-http
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      targetPort: 80
  externalIPs:
    - 192.168.56.101
  selector:
    run: helloworld

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: helloworld
  name: helloworld-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      run: helloworld
  template:
    metadata:
      labels:
        run: helloworld
    spec:
      containers:
      - image: tutum/hello-world
        name: helloworld
        ports:
        - containerPort: 80

Всеработает нормально, и я могу получить доступ к helloworld-deploy через службу helloworld-http на моем хост-компьютере.

Теперь я пытаюсь установить kubernetes-dashboard, используя эту конфигурацию.Я хочу обновить эту конфигурацию службы

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

так же, как указанную выше контрольную конфигурацию, чтобы я мог получить доступ к панели мониторинга на моем хост-компьютере без kubectl proxy.Вот конфигурация, которую я пытаюсь заменить оригинальной.

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: LoadBalancer
  ports:
    - port: 443
      targetPort: 8443
  externalIPs:
    - 192.168.56.101
  selector:
    k8s-app: kubernetes-dashboard

Я обновил тип сервиса до LoadBalancer и назначил ему внешний IP.Но это не работает.Я также попытался изменить порт на 80, но не повезло.Я не знаю, так ли это с конфигурацией приборной панели или я что-то упустил.Любая помощь и предложения приветствуются.

1 Ответ

0 голосов
/ 25 сентября 2019

Вы не можете использовать Сервисы типа LoadBalancer, если вы запускаете Kubernetes на своей машине, так как эти Сервисы нуждаются во внешнем вмешательстве со стороны поставщика облачных услуг для предоставления ваших Сервисов извне.

Вам следует взглянутьна Ingress и Службы типа NodePort , так как эти ресурсы также позволяют вам предоставлять ваши Службы извне.

Что-то подобное должно работать (не проверено):

apiVersion: v1
kind: Service
metadata:
  name: helloworld-http
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 80
  externalIPs:
    - 192.168.56.101 
  selector:
    run: helloworld

Это сделает вашу Службу доступной на каждом Узле в вашем кластере на порту NodePort.Ваша служба также будет доступна по адресу 192.168.56.101, если вы правильно перенаправите запросы, отправленные туда, на узлы вашего кластера.Если вы хотите убедиться, что ваша служба доступна извне, используйте общедоступный IP-адрес вместо 192.168.56.101.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...