Как получить доступ к модулю Kubernetes через службу, запущенную в Docker локального хоста-Kubernetes

#docker #kubernetes

#docker #kubernetes

Вопрос:

Я не уверен, как получить доступ к модулю, который работает за службой.

У меня установлен и запущен Docker CE. При этом у меня запущен Docker ‘Kubernetes’.

Я создал файл модуля, а затем kubectl created его … а затем использовал переадресацию портов, чтобы проверить, работает ли он, и это было. Отметьте!

Затем я создал службу в качестве балансировщика нагрузки, и kubectl create это тоже работает… но я не уверен, как его протестировать / получить доступ к запущенному модулю.

Вот выходные данные терминала:

 
Tests-MBP:k8s test$ kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
hornet-data   1/1     Running   0          4h    <none>

Tests-MBP:k8s test$ kubectl get services --show-labels
NAME             TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE   LABELS
hornet-data-lb   LoadBalancer   10.0.44.157   XX.XX.XX.XX    8080:32121/TCP   4h    <none>
kubernetes       ClusterIP      10.0.0.1      <none>         443/TCP          14d   component=apiserver,provider=kubernetes

Tests-MBP:k8s test$ 

  

Не уверен, что проблема с меткой модуля <none> ? Я использую метки для выбора службы.

Вот два файла…

 apiVersion: v1
kind: Pod
metadata:
  name: hornet-data
  labels:
    app: hornet-data
spec:
  containers:
    - image: ravendb/ravendb
      name: hornet-data
      ports:
        - containerPort: 8080
  

и

 apiVersion: v1
kind: Service
metadata:
  name: hornet-data-lb
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: hornet-data
  

Обновление 1:

По просьбе @vasily:

 Tests-MBP:k8s test$ kubectl get ep hornet-data-lb
NAME             ENDPOINTS   AGE
hornet-data-lb   <none>      5h
  

Обновление 2:

Дополнительная информация для / от Василия:

 Tests-MBP:k8s test$ kubectl apply -f hornet-data-pod.yaml 
pod/hornet-data configured

Tests-MBP:k8s test$ kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
hornet-data   1/1     Running   0          5h    app=hornet-data

Tests-MBP:k8s test$ kubectl get services --show-labels
NAME             TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE   LABELS
hornet-data-lb   LoadBalancer   10.0.44.157   XX.XX.XX.XX    8080:32121/TCP   5h    <none>
kubernetes       ClusterIP      10.0.0.1      <none>         443/TCP          14d   component=apiserver,provider=kubernetes

  

Комментарии:

1. можете ли вы показать «kubectl get ep hornet-data-lb»?

2. Обновлен ОП @VasilyAngapov. Нет конечных точек: (

3. в определении вашего модуля я вижу метки, но в кластере — нет. Можете ли вы повторно применить Pod manifest?

4. @VasilyAngapov OP снова обновлен.

5. все еще не работает?

Ответ №1:

@vailyangapov в основном ответил на это через комментарии в OP — этот ответ состоит из двух частей.

  1. Я не внес apply изменений в свой манифест. Я внес некоторые изменения в файл yaml своих служб, но не запустил эти изменения. Поэтому мне нужно было сделать kubectl apply -f myPod.yaml .

  2. Я был в неправильном контексте. Текущий контекст указывал на тестовую службу Azure Kubernetes. Я думал, что все это находится в моем кластере localhost, который поставляется с Docker-CE (так называемый docker-for-desktop кластер). Поскольку это новый компьютер, мне не удалось включить Kubernetes с помощью Docker (это ручной шаг ПОСЛЕ установки Docker-CE .. с настройкой по умолчанию, в которой он НЕ включен / не отмечен). Как только я вручную заметил это, я поставил галочку, чтобы включить Kubernetes и docker-for-desktop) cluster was installed. Then I manually changed over to this context: kubectl config use-context docker-for-desktop`.

Обе эти ошибки были простыми. Причина предоставления их в ответ, надеюсь, заключается в том, чтобы помочь другим использовать эту информацию, чтобы помочь им просмотреть свои собственные настройки, если что-то не работает правильно — возникает аналогичная проблема для меня.