Docker for mac 安装 Istio

Service Mesh 在过去的一年的迅猛发展,各大厂商都在投入精力开发适合自己的产品。而对于小厂来说虽不能自己开发,但选择也有很多,LinkerdEnvoyIstioConduit (Linkerd 2.0),甚至是 Consul 都在开发 Service Mesh。当中 Istio 因为出身名门和优秀的设计在众星之中脱颖而出,社区纷纷站队表示支持,尤其是发布 1.0 版本以后,更是引来众多关注。

Istio 虽然可以脱离 Kubernetes 运行,但从官方投入的精力和社区上的资料,都是基于 Kubernetes,如果不想采坑,还是老老实实的折腾 Kubernetes 吧。蚂蚁金服的 Jimmy song 创建了一个 kubernetes-vagrant-centos-cluster 项目,可以帮助我们很容易的启动 Kubernetes 集群。唯一不足是启动时会比较耗资源,而 Docker 的新版本也同样支持了 Kubernetes,于是便有了这篇文章。

安装 Kubernetes

在 Docker 18.06.0 的增加对 Kubernetes 的正式支持(在之前的版本也有支持,只是非正式版本)

docker支持kubernetes

这里调整了 docker 的内存为 4GB,之前默认 2GB 运行 Kubernetes 感觉会很吃力(当部署完Istio 这一套发现 4 GB也很吃紧,改成 7GB 后电脑才不那么热...)。

调整内存设置

找到 Kubernetes 选项,勾选 Enable 选择 Kubernetes,然后执行 Apply

开启kubernetes
启动中...

我们会看到 Kubernetes 一直在 starting... ,此时 docker 正在下载镜像,殊不知在遥远的东方有一堵“墙”,下载需要的镜像越过墙才可以。

无奈

要相信这个世界上总会有人与你一样遇到相同的问题,于是这个人就写了一个 github 仓库。按照文档所说,我们需要配置一下国内的代理,然后执行下载镜像脚本,再重新启动 Kubernetes ,Kubernetes 就这样奇迹般的启动起来了。

安装 kubectl

kubectl 是 Kubernetes 的客户端

brew install kubernetes-cli
# 或者更新
brew upgrade kubernetes-cli

安装 Kubernetes dashboard

kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

启动 proxy

kubectl proxy

访问这里:http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Dashboard

如果是想玩玩单点的 Kubernetes 到这里就结束啦~

安装 Istio

下载 Istio 最新版本

找个你心仪的地方解压,然后配置环境变量:

export PATH="$PATH:/解压的目录/istio-1.0.0/bin"

如果放在 .bash_profile 或者 .zshrc 文件中记得要 source 一下

source ~/.bash_profile

验证一下是否生效

istioctl version

安装 Istio

这里为了快速简单的搭建 Istio ,使用 helm 来帮助我们。

安装 Helm

Helm 是 Kubernetes 的包管理器

brew install kubernetes-helm
# 验证一下
helm version

然后我们安装 Istio 步骤

如果 Helm 版本小于 2.10.0 ,请通过 kubectl apply 安装 Istio,并等待几秒钟,以便在kube-apiserver 中提交CRD:

kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml
kubectl apply -f install/kubernetes/helm/istio/charts/certmanager/templates/crds.yaml

官方文档提供了安装几种方式,Option 1 使用 helm template 安装,可选的东西比较少。所以我们选择 Option 2

注意:这2个选项是互斥的,只能二选一哦。

  1. 如果还没有为 Tiller 配置 service account,请配置一个:

    kubectl create -f install/kubernetes/helm/helm-service-account.yaml
    
  2. 使用 service account 在您的集群中安装 Tiller

    helm init --service-account tiller
    
  3. 安装 Istio

    helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
    --set tracing.enabled=true \
    --set kiali.enabled=true \
    --set grafana.enabled=true
    

默认 tracing 、kiali 、grafana 并不会开启,这里需要在安装时手动 --set xxx.enabled=true 进行开启。配置说明可查看:install/kubernetes/helm/istio/README.md

PS: kiali pod 部署时会无法正常启动,不影响使用,后面我们会再提到。

部署 Bookinfo

我们来部署一个官方的 Bookinfo Examples,进入 istio 的目录

kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)

确认一下 service 和 pod 是否正确启动了

kubectl get services
get services
kubectl get pods
get pods

然后我们来创建网关

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

再 check 一下

istioctl get gateway
gateway

注意! 后面会和官方文档不太一样啦,官方会去获取 ingress 的 ip 和端口,我们使用的 Docker for Mac 不需要查看映射端口,在 Dashboard 上找到 namespace 选择为 istio-system ,就可以看到我们映射的端口。

查看 gateway 端口

激动人心的时刻到啦,访问这里:http://localhost/productpage

就可以看到 Bookinfo 的demo啦!

Bookinfo demo

卸载

可以直接参考官方文档啦!

分布式跟踪-Jaeger

开启 Jaeger 网络映射

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

访问 http://127.0.0.1:16686/

Jaeger UI

可以点开具体的一次Trace来查看链路情况

Trace

更多好玩的东西请参考官方文档

使用Grafana 查询指标

先看来看我们的 Prometheus和 Grafana 是否正常

kubectl -n istio-system get svc prometheus
kubectl -n istio-system get svc grafana
Prometheus和 Grafana 状态

开启 Grafana 网络映射

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

访问 http://localhost:3000/d/LJ_uJAvmk/istio-service-dashboard?refresh=10s&orgId=1

Grafana

更多好玩的东西请参考官方文档

kiali

kiali 目前还在开发当中,所以不能用于生产,在Istio 默认不被开启,不过玩玩还是可以的。前面提到 kiali 在部署的时候无法启动,查看了一下原因是拉取的镜像为docker.io/kiali/kiali:istio-release-1.0,而Docker hub 中根本没有这个 Tag ...

docker hub

所以抱着试试看的态度,在 Dashboard 手动改一下 tag 为 latest ,更新!


修改tag

开启映射网络端口

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

访问:http://localhost:20001/
账号密码:admin/admin

kiali UI

看起来还是蛮酷的,更多细节可以参考 Kiali 官方文档

停止Kubernetes

停止Kubernetes

在不需要的时候我们可以将Kubernetes 停止,以保证我们 Mac 的性能,在安装了太多的组件后会比较耗电。

一切都可以重来...

重新开始

Docker for Mac 还提供了一个非常人性的功能——Reset

一切都可以重来...

无论我们是安装过程出了问题还是需要做各种测试,只需要轻轻点击 【Reset Kubernetes cluster】一切就重新开始。

总结

Istio 的 example 还有很多可以玩的,比如限流、故障注入、retry 等等,后面有机会再和大家分享。教程类的文章总有时效性,尤其像发展迅猛的Istio ,所以如果有安装失败的同学可以给我留言,反正我也不会改的。


见笑啦

今天就到这里啦,谢谢大家。

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2bvwm2k9kftw0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容