Соединение weave-scope Kubernetes отказано / не может быть достигнуто после внешней экспозиции - PullRequest
0 голосов
/ 20 марта 2020

Я следовал этому руководству по настройке weave-scope: https://www.katacoda.com/courses/weave/installing-weave-scope-on-kubernetes

Однако я настраивал это на своем собственном kubernetes кластере который я недавно установил. В моем собственном кластере я использую Cilium в качестве сетевого менеджера, если это что-то меняет?

Поэтому я выполнил следующие команды:

~$ kubectl create -f 'https://cloud.weave.works/launch/k8s/weavescope.yaml'
~$ pod=$(kubectl get pod -n weave --selector=name=weave-scope-app -o jsonpath={.items..metadata.name})
~$ kubectl expose pod $pod -n weave --external-ip="10.96.0.1" --port=4040 --target-port=4040

После чего это выглядит как служба был правильно выставлен:

~$ kubectl get services -n weave
NAME                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
weave-scope-app                    ClusterIP   10.100.81.142   <none>        80/TCP     38m
weave-scope-app-848cd4d8b5-w2nmz   ClusterIP   10.98.145.60    10.96.0.1     4040/TCP   33m

Однако при попытке доступа к нему в Google chrome:

http://10.96.0.1: 4040 / -> Этот сайт не может достигнуто 10.96.0.1 слишком много времени для ответа

(IP-адрес виртуального узла главного узла K8s) http://10.0.0.100: 4040 / -> Невозможно связаться с этим сайтом 10.0.0.100 отказано в подключении

Наконец, использование curl на внутреннем IP в то время, как s sh ', введенный в главный узел, дает следующее:

~$ curl 10.98.145.60:4040
<!doctype html>
<html class="no-js">
  <head>
    <meta charset="utf-8">
    <title>Weave Scope</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script language="javascript">window.__WEAVEWORKS_CSRF_TOKEN = "$__CSRF_TOKEN_PLACEHOLDER__";</script>
  </head>
  <body>
    <!--[if lt IE 10]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
    <![endif]-->
    <div class="wrap">
      <div id="app"></div>
    </div>
  <script type="text/javascript" src="app-4028151e529905aadd83.js?3f69be060dd8d9e6a317"></script><script type="text/javascript" src="vendors-4a04efbf4fb2fcb331ba.js?3f69be060dd8d9e6a317"></script></body>
</html>

Так что, похоже, служба работает внутренне, но я просто не могу выставить это правильно. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 20 марта 2020

Невозможно подключиться к модулю через IP-адрес кластера с узла. Вы должны быть в другом модуле (в основном внутри сети модуля) и выполнить curl для его работы. Теперь, чтобы модуль был доступен из-за пределов кластера kubernetes, вам нужно открыть его через службу типа NodePort или LoadBalancer.

...