繁体   English   中英

Kubernetes weave-scope 连接被拒绝/在外部暴露后无法访问

[英]Kubernetes weave-scope connection refused / can't be reached after exposing externally

我一直在按照本指南设置编织范围: 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

但是尝试在谷歌浏览器上访问它:

http://10.96.0.1:4040/ -> 无法访问此站点 10.96.0.1 响应时间过长

(K8s 主节点VM IP) http://10.0.0.100:4040/ -> 无法访问此站点 10.0.0.100 拒绝连接

最后,在通过 ssh 连接到主节点的同时在内部 IP 上使用 curl 会得到:

~$ 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>

因此,该服务似乎在内部运行,但我似乎无法正确公开它。 有人会有什么想法吗?

您无法从节点通过集群 IP 连接到 Pod。 您需要在另一个 pod 中(基本上在 pod 网络内)并执行 curl 才能使其工作。 现在为了让 pod 可以从 kubernetes 集群外部访问,您需要通过 NodePort 或 LoadBalancer 类型的服务来公开它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM