IBM Kubernetes Service - 玩转Istio 1.5(二)

上一篇文章,我们简单介绍了基于IBM Kubernetes Service的最新版istio 1.5的部署,今天我们来学习下Istio 1.5的监控组件.

在Istio附件的1.5版本中,Prometheus、Grafana、Jaeger和Kiali监控组件包含在您的Istio安装中,但由于当前Istio社区版本中的安全问题,这些组件默认被禁用,要启用这些组件,请执行以下步骤。

1.修改ConfigMap: managed-istio-custom, 添加并保存:istio-monitoring:  "true"

kubectl edit cm managed-istio-custom -n ibm-operators

修改后如下图所示:

2.将更改应用到Istio,此步骤可能需要10分钟才能生效。

kubectl annotate iop -n ibm-operators managed-istio --overwrite version="custom-applied-at: $(date)"

3.Grafana没有Secret会无法启动,一直在pending状态。所以要为Grafana创建Secret,按序执行下面3条命令。

GRAFANA_USERNAME=$(read -p 'Grafana Username: ' uval && echo -n $uval | base64)

GRAFANA_PASSPHRASE=$(read -p 'Grafana Passphrase: ' pval && echo -n $pval | base64)

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: grafana
  namespace: istio-system
type: Opaque
data:
  username: $GRAFANA_USERNAME
  passphrase: $GRAFANA_PASSPHRASE
EOF

设定好的用户名和密码务必要记住。

4.暴露Grafana外部服务

kubectl expose deployment grafana -n istio-system --name=grafana-external --type=LoadBalancer --port=80 --target-port=3000

5.为Kiali提供一个Secret。Kiali是一个开源项目,它作为附加组件安装在Istio之上,使服务网格可视化。它提供了对微服务如何相互交互的更深入的了解,并提供了诸如断路器和服务请求费率等特性。我们后面的测试会用到。

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: kiali
  namespace: istio-system
  labels:
    app: kiali
type: Opaque
data:
  username: "YWRtaW4="
  passphrase: "YWRtaW4="
EOF

6.暴露Kiali外部服务

kubectl expose deployment kiali -n istio-system --name=kiali-external --type=LoadBalancer --port=80 --target-port=20001

7. 最后,我们查看下Pod:kubectl get pod -n istio-system

在Kubernetes中,sidecar是pod中的通用容器,其目的是支持主容器。为了让Istio工作,Envoy proxy必须作为sidecar部署到deployment中的每个pod中。将istio sidecar注入到pod中有两种方法: 手动使用istioctl 命令行工具或使用Istio sidecar注入器自动注入。今天的练习中,我们将使用istio提供的自动注入。

我们将default命名空间启用istio自动注入:

kubectl label namespace default istio-injection=enabled

接下来我们要安装测试用到的应用程序:Guestbook App

git clone https://github.com/IBM/guestbook.git

切换到:cd guestbook/v2

首先安装Redis数据库和以及暴露的服务,数据库包含了一个主节点和两个从节点。

kubectl create -f redis-master-deployment.yaml
kubectl create -f redis-master-service.yaml
kubectl create -f redis-slave-deployment.yaml
kubectl create -f redis-slave-service.yaml

创建完成后查看一下:

kubectl get deployments
kubectl get svc
kubectl get pods

然后创建两个不同版本的应用:Guestbook v1和v2

kubectl apply -f ../v1/guestbook-deployment.yaml
kubectl apply -f guestbook-deployment.yaml

暴露Guestbook的服务:kubectl create -f guestbook-service.yaml

接着查看一下服务:kubectl get service guestbook -n default ,找到外部IP并复制到浏览器。

在浏览器中就能查看到刚才部署的留言簿应用。该服务将随机跳转到v1或v2版本。如果想看到一个不同的版本,需要进行硬刷新(mac上是cmd + shift + r, windows上是ctrl + f5),或者通过curl命令。

然后我们使用Kiali查看应用流量信息,先查一下前面创建的kiali外部服务

kubectl get svc/kiali-external -n istio-system

我的环境是 http://169.60.47.52/kiali/,刚才设置的secret,用户名和密码是:admin/admin。登录后就可以看到下图。

default命名空间我们看到了一个‘N/A’,表示这个命名空间还没有接入istio ingress gateway。

我们进入default,查看应用的版本视图,如果不是最近访问guestbook,可以切换下时间。

接下来看下Grafana外部服务IP

kubectl get svc/grafana-external -n istio-system

使用浏览器防范外部IP,然后用之前创建的Secret,用户名密码登录:

随后我们点击右上角的HOME,展开Istio的仪表板查看各类度量值,大部分是各类Istio组件的度量值,度量值都是通过Promethues来收集的。

突然发现目前Grafana的仪表板没有随着istio 1.5更新,仍然是1.4的组件。从Grafana官网上也没有找到istiod的Dashboard。

Istio Service和Istio workload是服务和负载的仪表板,主要是针对应用的,也是运维最为关心的。

最后我们进入“Istio workload”查看不同workload的度量值。

今天的关于Istio的监控管理就介绍到这里,下一篇我会重点介绍基于Istio 1.5的AB测试和金丝雀发布。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值