Docker for mac 安裝 Istio

Service Mesh 在過去的一年的迅猛發(fā)展,各大廠商都在投入精力開發(fā)適合自己的產(chǎn)品蹂随。而對于小廠來說雖不能自己開發(fā)十嘿,但選擇也有很多,Linkerd岳锁、Envoy绩衷、IstioConduit (Linkerd 2.0)激率,甚至是 Consul 都在開發(fā) Service Mesh咳燕。當(dāng)中 Istio 因?yàn)槌錾砻T和優(yōu)秀的設(shè)計(jì)在眾星之中脫穎而出,社區(qū)紛紛站隊(duì)表示支持乒躺,尤其是發(fā)布 1.0 版本以后招盲,更是引來眾多關(guān)注。

Istio 雖然可以脫離 Kubernetes 運(yùn)行嘉冒,但從官方投入的精力和社區(qū)上的資料曹货,都是基于 Kubernetes,如果不想采坑讳推,還是老老實(shí)實(shí)的折騰 Kubernetes 吧顶籽。螞蟻金服的 Jimmy song 創(chuàng)建了一個 kubernetes-vagrant-centos-cluster 項(xiàng)目,可以幫助我們很容易的啟動 Kubernetes 集群银觅。唯一不足是啟動時會比較耗資源蜕衡,而 Docker 的新版本也同樣支持了 Kubernetes,于是便有了這篇文章。

安裝 Kubernetes

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

docker支持kubernetes

這里調(diào)整了 docker 的內(nèi)存為 4GB久脯,之前默認(rèn) 2GB 運(yùn)行 Kubernetes 感覺會很吃力(當(dāng)部署完Istio 這一套發(fā)現(xiàn) 4 GB也很吃緊,改成 7GB 后電腦才不那么熱...)镰吆。

調(diào)整內(nèi)存設(shè)置

找到 Kubernetes 選項(xiàng)帘撰,勾選 Enable 選擇 Kubernetes,然后執(zhí)行 Apply

開啟kubernetes
啟動中...

我們會看到 Kubernetes 一直在 starting... 万皿,此時 docker 正在下載鏡像摧找,殊不知在遙遠(yuǎn)的東方有一堵“墻”,下載需要的鏡像越過墻才可以牢硅。

無奈

要相信這個世界上總會有人與你一樣遇到相同的問題蹬耘,于是這個人就寫了一個 github 倉庫。按照文檔所說减余,我們需要配置一下國內(nèi)的代理综苔,然后執(zhí)行下載鏡像腳本,再重新啟動 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

如果是想玩玩單點(diǎn)的 Kubernetes 到這里就結(jié)束啦~

安裝 Istio

下載 Istio 最新版本

找個你心儀的地方解壓,然后配置環(huán)境變量:

export PATH="$PATH:/解壓的目錄/istio-1.0.0/bin"

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

source ~/.bash_profile

驗(yàn)證一下是否生效

istioctl version

安裝 Istio

這里為了快速簡單的搭建 Istio 抒抬,使用 helm 來幫助我們杨刨。

安裝 Helm

Helm 是 Kubernetes 的包管理器

brew install kubernetes-helm
# 驗(yàn)證一下
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個選項(xiàng)是互斥的捉撮,只能二選一哦。

  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
    

默認(rèn) tracing 巾遭、kiali 、grafana 并不會開啟闯估,這里需要在安裝時手動 --set xxx.enabled=true 進(jìn)行開啟灼舍。配置說明可查看:install/kubernetes/helm/istio/README.md

PS: kiali pod 部署時會無法正常啟動,不影響使用涨薪,后面我們會再提到骑素。

部署 Bookinfo

我們來部署一個官方的 Bookinfo Examples,進(jìn)入 istio 的目錄

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

確認(rèn)一下 service 和 pod 是否正確啟動了

kubectl get services
get services
kubectl get pods
get pods

然后我們來創(chuàng)建網(wǎng)關(guān)

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 網(wǎng)絡(luò)映射

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

可以點(diǎn)開具體的一次Trace來查看鏈路情況

Trace

更多好玩的東西請參考官方文檔

使用Grafana 查詢指標(biāo)

先看來看我們的 Prometheus和 Grafana 是否正常

kubectl -n istio-system get svc prometheus
kubectl -n istio-system get svc grafana
Prometheus和 Grafana 狀態(tài)

開啟 Grafana 網(wǎng)絡(luò)映射

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 目前還在開發(fā)當(dāng)中,所以不能用于生產(chǎn)醉蚁,在Istio 默認(rèn)不被開啟燃辖,不過玩玩還是可以的。前面提到 kiali 在部署的時候無法啟動网棍,查看了一下原因是拉取的鏡像為docker.io/kiali/kiali:istio-release-1.0黔龟,而Docker hub 中根本沒有這個 Tag ...

docker hub

所以抱著試試看的態(tài)度,在 Dashboard 手動改一下 tag 為 latest 确沸,更新捌锭!


修改tag

開啟映射網(wǎng)絡(luò)端口

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

看起來還是蠻酷的,更多細(xì)節(jié)可以參考 Kiali 官方文檔

停止Kubernetes

停止Kubernetes

在不需要的時候我們可以將Kubernetes 停止罗捎,以保證我們 Mac 的性能观谦,在安裝了太多的組件后會比較耗電。

一切都可以重來...

重新開始

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

一切都可以重來...

無論我們是安裝過程出了問題還是需要做各種測試桨菜,只需要輕輕點(diǎn)擊 【Reset Kubernetes cluster】一切就重新開始豁状。

總結(jié)

Istio 的 example 還有很多可以玩的,比如限流倒得、故障注入泻红、retry 等等,后面有機(jī)會再和大家分享霞掺。教程類的文章總有時效性谊路,尤其像發(fā)展迅猛的Istio ,所以如果有安裝失敗的同學(xué)可以給我留言菩彬,反正我也不會改的缠劝。


見笑啦

今天就到這里啦,謝謝大家骗灶。

我的博客即將搬運(yùn)同步至騰訊云+社區(qū)惨恭,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=2bvwm2k9kftw0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耙旦,隨后出現(xiàn)的幾起案子脱羡,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锉罐,死亡現(xiàn)場離奇詭異帆竹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氓鄙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門馆揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抖拦,你說我怎么就攤上這事升酣。” “怎么了态罪?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵噩茄,是天一觀的道長。 經(jīng)常有香客問我复颈,道長绩聘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任耗啦,我火速辦了婚禮凿菩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帜讲。我一直安慰自己衅谷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布似将。 她就那樣靜靜地躺著获黔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪在验。 梳的紋絲不亂的頭發(fā)上玷氏,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音腋舌,去河邊找鬼盏触。 笑死,一個胖子當(dāng)著我的面吹牛块饺,可吹牛的內(nèi)容都是我干的赞辩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼刨沦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膘怕?” 一聲冷哼從身側(cè)響起想诅,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后来破,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篮灼,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年徘禁,在試婚紗的時候發(fā)現(xiàn)自己被綠了诅诱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡送朱,死狀恐怖娘荡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驶沼,我是刑警寧澤炮沐,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站回怜,受9級特大地震影響大年,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜玉雾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一翔试、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧复旬,春花似錦垦缅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至幸冻,卻和暖如春粹庞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洽损。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工庞溜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碑定。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓流码,卻偏偏與公主長得像,于是被迫代替她去往敵國和親延刘。 傳聞我的和親對象是個殘疾皇子漫试,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容