簡體   English   中英

無法查看 kiali 儀表板

[英]Unable to view kiali dashboard

我使用以下步驟安裝了 Istion 1.6.9 版

Install Istio Version 1.6.9
wget https://github.com/istio/istio/releases/download/1.6.9/istio-1.6.9-linux-amd64.tar.gz
tar -xzvf istio-1.6.9-linux-amd64.tar.gz
cd istio-1.6.9
cd bin/
sudo mv istioctl /usr/local/bin/
istioctl --version
istioctl install --set profile=demo

我想訪問 kiali 儀表板,但我無法弄清楚如何訪問!

我可以看到 kiali 在 pod 中運行:

kubectl get pods -n istio-system
NAME                                    READY   STATUS    RESTARTS   AGE
grafana-5dc4b4676c-wcb59                1/1     Running   0          32h
istio-egressgateway-5889bb8976-stlqd    1/1     Running   0          32h
istio-ingressgateway-699d97bdbf-w6x46   1/1     Running   0          32h
istio-tracing-8584b4d7f9-p66wh          1/1     Running   0          32h
istiod-86d4497c9-xv2km                  1/1     Running   0          32h
kiali-6f457f5964-6sssn                  1/1     Running   0          32h
prometheus-5d64cf8b79-2kdww             2/2     Running   0          32h

我也可以將 kiali 視為服務:

kubectl get svc -n istio-system
NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)                                                                      AGE
grafana                     ClusterIP      10.100.101.71    <none>                                                                         3000/TCP                                                                     32h
istio-egressgateway         ClusterIP      10.100.34.75     <none>                                                                         80/TCP,443/TCP,15443/TCP                                                     32h
istio-ingressgateway        LoadBalancer   10.100.84.203    a736b038af6b5478087f0682ddb4dbbb-1317589033.ap-southeast-2.elb.amazonaws.com   15021:31918/TCP,80:32736/TCP,443:30611/TCP,31400:30637/TCP,15443:31579/TCP   32h
istiod                      ClusterIP      10.100.111.159   <none>                                                                         15010/TCP,15012/TCP,443/TCP,15014/TCP,853/TCP                                32h
jaeger-agent                ClusterIP      None             <none>                                                                         5775/UDP,6831/UDP,6832/UDP                                                   32h
jaeger-collector            ClusterIP      10.100.84.202    <none>                                                                         14267/TCP,14268/TCP,14250/TCP                                                32h
jaeger-collector-headless   ClusterIP      None             <none>                                                                         14250/TCP                                                                    32h
jaeger-query                ClusterIP      10.100.165.216   <none>                                                                         16686/TCP                                                                    32h
kiali                       ClusterIP      10.100.159.127   <none>                                                                         20001/TCP                                                                    32h
prometheus                  ClusterIP      10.100.113.255   <none>                                                                         9090/TCP                                                                     32h
tracing                     ClusterIP      10.100.77.39     <none>                                                                         80/TCP                                                                       32h
zipkin                      ClusterIP      10.100.247.201   <none>                                                                         9411/TCP

我還可以看到秘密也部署如下:

kubectl get secrets
NAME                                       TYPE                                  DATA   AGE
default-token-ghz6r                        kubernetes.io/service-account-token   3      8d
sh.helm.release.v1.aws-efs-csi-driver.v1   helm.sh/release.v1                    1      6d
[centos@ip-10-0-0-61 ~]$ kubectl get secrets -n istio-system
NAME                                               TYPE                                  DATA   AGE
default-token-z6t2v                                kubernetes.io/service-account-token   3      32h
istio-ca-secret                                    istio.io/ca-root                      5      32h
istio-egressgateway-service-account-token-c8hfp    kubernetes.io/service-account-token   3      32h
istio-ingressgateway-service-account-token-fx65w   kubernetes.io/service-account-token   3      32h
istio-reader-service-account-token-hxsll           kubernetes.io/service-account-token   3      32h
istiod-service-account-token-zmtsv                 kubernetes.io/service-account-token   3      32h
kiali                                              Opaque                                2      32h
kiali-service-account-token-82gk7                  kubernetes.io/service-account-token   3      32h
prometheus-token-vs4f6                             kubernetes.io/service-account-token   3      32h

我在 Linux 堡壘主機上運行了上述所有命令,我希望如果我在 Linux 堡壘和 SG 上打開端口 20001,我應該能夠訪問它的管理員/管理員憑據? 如下所示:

http://10.100.159.127:20001/

我的第二個問題是 ISTIO,因為該軟件是在我的 Linux Bastion Server 還是在我的 EKS CLuster 上運行的? 我的感覺是它在本地堡壘服務器上運行,但是由於我們使用了以下命令

kubectl label ns default istio-injection=enabled
kubectl get ns
kubectl label ns jenkins istio-injection=enabled
kubectl label ns spinnaker istio-injection=enabled

在這些命名空間中運行的任何 pod 都會自動注入 Envoy 代理 pod,對嗎?

PS:我做了以下事情:

nohup istioctl dashboard kiali &

在 SG 級別和操作系統級別也打開了端口......仍然無法訪問 Kiali 儀表板

http://3.25.217.61:40235/kiali
[centos@ip-10-0-0-61 ~]$ wget http://3.25.217.61:40235/kiali
--2020-09-11 15:56:18--  http://3.25.217.61:40235/kiali
Connecting to 3.25.217.61:40235... failed: Connection refused.

curl ifconfig.co
3.25.217.61

sudo netstat -nap|grep 40235
tcp        0      0 127.0.0.1:40235         0.0.0.0:*               LISTEN      29654/istioctl
tcp6       0      0 ::1:40235               :::*                    LISTEN      29654/istioctl

真的,無法理解發生了什么問題......

只需運行istioctl dashboard kiali

Istioctl 將創建一個代理。 現在使用管理員/管理員憑據登錄。

回答第二個問題:Istio 正在您的集群上運行,並使用 istioctl 進行配置,安裝在您的堡壘上。

通過使用istio-injection=enabled標記命名空間,sidecar 將被自動注入。 如有必要,您可以通過如下注釋來禁用 pod 的注入:

spec:
  selector:
    matchLabels:
      ...
  template:
    metadata:
      labels:
        ...
      annotations:
        sidecar.istio.io/inject: "false"

更新

要在沒有 istioctl/kubectl 代理的情況下訪問 kiali,您有三個選項。 如您所見,這取決於 kiali 服務類型:

  1. ClusterIP(默認)

要使用默認值,請設置從網關到 kiali 服務的路由。 這是使用VirtualServiceDestinationRule 您可以通過例如<ingress-gateway-loadbalancer-id>.amazonaws.com/kiali

  1. 節點端口

你可以通過在istio安裝上設置相應的值來改變類型為NodePort ,通過<ingress-gateway-loadbalancer-id >.amazonaws.com:20001/kiali``訪問kiali

  1. 負載均衡器

您可以通過在 istio 安裝上設置相應的值來更改類型為LoadBalancer 將在 aws 上創建第二個彈性負載均衡器,並且 kiali 服務將有一個外部 ip,就像 ingressgateway 服務一樣。 您現在可以通過<kiali-loadbalancer-id>.amazonaws.com/kiali訪問它

我會推薦選項 1。這是生產的最佳實踐,您不必深入研究 istio 安裝配置,這在開始時可能會讓人不知所措。

通過以下命令檢查 kiali 服務的端口及其類型。

kubectl get svc -n istio-system

如果類型是 NodePort 那么你可以檢查 localhost:( kiali 服務的端口) 否則如果類型是 clusterIP 那么你必須通過轉發它來公開它。

通過 Kubernetes 端口轉發或通過網關公開 Kiali。 以下轉發命令在 localhost 端口 20001 上公開 Kiali:

kubectl -n istio-system port-forward svc/kiali 20001:20001 &

然后檢查 localhost:20001 以獲取 kiali 儀表板。

使用 Kubernetes:https://{domain or ingress ip}/kiali

kubectl get ingress kiali -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

或者(對於任何類型的平台)

oc port-forward svc/kiali 20001:20001 -n istio-system

kubectl port-forward svc/kiali 20001:20001 -n istio-system

kubectl  port-forward  $(kubectl get pod -n istio-system -l app=kiali   -o jsonpath='{.items[0].metadata.name}')   -n istio-system 20001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM