當我們知道Istio是一個好東西,能夠幫助我們快速實現微服務化中的一些關鍵節點,那麼下一步就需要考慮怎麼使用Istio了,Istio現在版本是和Kubernetes強關聯在一起的,如果大家還不是太瞭解Kubernetes可以先從筆者的文章中瞭解,通過Kubernetes生態Istio可以非常方便的進行部署和使用。
附上:
喵了個咪的博客:w-blog.cn
Istio官方地址:https://preliminary.istio.io/zh
Istio中文文檔:https://preliminary.istio.io/zh/docs/
PS : 此處基於當前最新istio版本1.0.3版本進行搭建和演示
一. Kubernetes準備工作
搭建部署Istio時需要先準備好Kubernetes環境,筆者這邊使用的是Rancher進行環境的搭建,可以參考筆者的以下博文:
Docker應用容器引擎介紹與搭建 - 喵了個咪博客空間 - 開源中國
Kubernetes(二) - 使用Rancher部署K8S集羣(搭建Rancher) - 喵了個咪博客空間 - 開源中國
Kubernetes(三) - 使用Rancher部署K8S集羣(搭建Kubernetes) - 喵了個咪博客空間 - 開源中國
Docker應用容器引擎介紹與搭建 - 喵了個咪的博客 - CSDN博客
Kubernetes(二) - 使用Rancher部署K8S集羣(搭建Rancher) - 喵了個咪的博客 - CSDN博客
Kubernetes(三) - 使用Rancher部署K8S集羣(搭建Kubernetes) - 喵了個咪的博客 - CSDN博客
- 這裏需要着重提醒的是關於在部署的時候需要修改Kubernetes模板配置項,之後配置之後後面的Sidecar自動注入才能使用,否則只能手動入住Sidecar.
- 需要找到Kubernetes Admission controllers選項,如下
NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,ResourceQuota
在指定位置添加兩個選項
MutatingAdmissionWebhook,ValidatingAdmissionWebhook
如下
NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota
這樣才啓動了admissionregistration API
- 最後在創建集羣的時候選擇我們事先準備好的環境模板即可.
然後按照筆者之前的文章部署k8s即可:
PS : 這裏使用的K8S版本爲1.11,推薦使用1.10以上的版本
二. 部署Istio
PS : 1.0.3版本官方已經完全把docker倉庫使用了docker.io捨棄了grc.io就不需要我們去翻牆或者複製鏡像了(不在推薦使用1.0.3以前的版本)
首先去官方git下載對應的版本包(liunx 和 mac 要分開)
Releases · istio/istio · GitHub
> tar -zxvf istio-1.0.3-linux.tar.gz
2.1 安裝istioctl
如果手動注入sidecar的話需要使用這個命令,自動注入的話不裝這個也行:
> sudo cp istio-1.0.3/bin/istioctl /usr/local/bin/
2.2 安裝Istio核心組件
簡單的安裝只需要通過運行官方提前準備好的yaml即可,如果有定製需求(有些內部組件不需要可以使用helm進行yaml構建)
> kubectl apply -f istio-1.0.3/install/kubernetes/istio-demo.yaml
> kubectl get svc -n istio-system
> kubectl get pods -n istio-system
PS : 這邊會有三個0/1的是正常的,主要是三個task只有到達指定時間纔會運行或一次性腳本
三. 結尾
此時istio就已經搭建完成,通過這種方式搭建的istio是一整套沒有刪減的容器組,包括grafaba + prometheus等(存在磁盤和處理資源的問題),如果有需求獨立在外層部署這些組件的需求就需要修安裝yaml進行了解學習修改,本套文章後續也會講解怎麼把一些非核心組件在外層部署(每個版本都會有一些區別需要小心)。
PS : 大家也許遇到了無法訪問外網的問題可以關注筆者後續的Egress流量控制或參考 Istio Prelim 1.1 / 控制 Egress 流量