【发布时间】:2020-01-23 06:25:38
【问题描述】:
我正在使用minikube 运行 kubernetes 集群。我按照Istio Docs 中给出的设置安装了 istio 插件。我可以使用localhost:3000 访问仪表板,但无法使用ip:3000 访问。
检查防火墙。它没有阻塞任何端口。
【问题讨论】:
标签: kubernetes microservices grafana minikube istio
我正在使用minikube 运行 kubernetes 集群。我按照Istio Docs 中给出的设置安装了 istio 插件。我可以使用localhost:3000 访问仪表板,但无法使用ip:3000 访问。
检查防火墙。它没有阻塞任何端口。
【问题讨论】:
标签: kubernetes microservices grafana minikube istio
不幸的是,如果您使用的是istio,那么仅更改服务类型并不容易。您必须配置 Istio VirtualService 并创建 Gateway。
我将此答案发布为与另一个堆栈案例相关的社区 wiki:https://stackoverflow.com/a/56019381/11148139 如前所述,问题有 1 个反对票,将来可能会被删除,我将在这种情况下发布以供将来使用。
=============================================
您可以创建Istio Gateway and VirtualService 以便将您的请求转发到默认在端口3000 上运行的grafana 服务
首先,让我们检查grafana 和istio-ingressgateway 服务
kubectl get svc grafana istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 100.71.67.105 <none> 3000/TCP 18h
istio-ingressgateway LoadBalancer 100.64.42.106 <Public IP address> 15020:31766/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32576/TCP,15030:30728/TCP,15031:31037/TCP,15032:31613/TCP,15443:32501/TCP 18h
所以,我们让grafana 运行服务在端口 3000 上侦听,默认 istio-ingressgateway LoadBalancer 服务使用分配的公共 IP 地址运行。
然后我们创建gateway 来使用这个默认的LoadBalancer。
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: grafana-gateway
namespace: istio-system # Use same namespace with backend service
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: HTTP
protocol: HTTP
hosts:
- "*"
EOF
然后配置到grafana service的路由,用于通过此网关进入的流量:
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana
namespace: istio-system # Use same namespace with backend service
spec:
hosts:
- "*"
gateways:
- grafana-gateway # define gateway name
http:
- match:
- uri:
prefix: "/"
route:
- destination:
port:
number: 3000 # Backend service port
host: grafana # Backend service name
EOF
然后点击http://<public_ip_istio_ingressgateway>,你应该会看到 grafana 仪表板
希望对你有帮助。
【讨论】:
您需要为此设置 grafana 服务类型NodePort。您可以使用$ kubectl edit svc grafana -n istio-system 更改它,并将.spec.type 从ClusterIP 更改为NodePort,然后保存并退出编辑器。
要访问 grafana $ kubectl get svc grafana -n istio-system 并获取 NodePort 字段,然后通过 ip:$NodePortValue 访问它
【讨论】:
检查 grafana 服务类型。
您可以使用NodePort 或LoadBalancer 作为服务类型。
使用NodePort和ip或者你可以简单地使用LoadBalancer的IP地址来访问grafana vai internet的在线服务。
【讨论】: