我正在使用minikube
运行kubernetes集群。我按照Istio Docs中给出的设置安装了istio插件。我可以使用localhost:3000
访问仪表板,但不能使用ip:3000
访问仪表板。
已检查防火墙。它没有阻塞任何端口。
答案 0 :(得分:1)
不幸的是,如果您使用的是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仪表板
希望对您有帮助。
答案 1 :(得分:0)
您需要为此设置grafana服务类型NodePort
。您可以使用$ kubectl edit svc grafana -n istio-system
进行更改,并将.spec.type
从ClusterIP
更改为NodePort
,然后保存并退出编辑器。
要访问grafana $ kubectl get svc grafana -n istio-system
并获取NodePort
字段,然后通过ip:$NodePortValue
答案 2 :(得分:0)
检查grafana服务类型。
您可以使用NodePort
或LoadBalancer
作为服务类型。
将NodePort
与ip一起使用,或者您只需使用LoadBalancer
的IP地址即可访问grafana vai internet的在线服务。