第一章 九析帶你輕鬆完爆服務網格 - istio 安裝

系列文章:linux


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程安全

目錄bash

1 前言服務器

2 微服務的歷史微信

3 istio網絡

4 istio 使用架構

    4.1 下載 istioapp

    4.2 安裝 istio負載均衡

    4.3 配置 istioctl 工具路徑框架

    4.4 實現 istioctl 自動補全功能

    4.5 安裝學習版 istio

    4.6 卸載 istio

5 總結


1 前言

        若是你對博客有任何疑問,請加微信溝通:

1.jpg


2 微服務的歷史

        微服務從馬丁提出到今天爲止,大致上通過了四代。

        第一代(1.0 時代):服務發現階段。單體服務發展到微服務後,原先的通訊方式從進程內函數調用發展到了不一樣服務器上的不一樣服務之間的進程調用,這樣的架構變化,首先要解決的關鍵問題就是服務的註冊與發現。表明技術即是 dubbo 和 grpc、brpc 框架之爭。

        第二代(2.0 時代):當服務發現問題解決了以後,緊接着帶來的挑戰即是服務治理。何爲服務治理,就是除了服務之間通信以外,還須要更深層次考慮到服務之間調用的失敗重試、容錯、降級、監控、安全、灰度、流控能問題。

        第三代(3.0 時代):微服務 2.0 時代帶來了解決方案的百花齊放,各方你方唱罷,我方登場,相同問題的不一樣解決方案紛紛亮相,一時間風雲際會,好不熱鬧。好比網關解決方案就有 zuul、gateway;全鏈路監控就有 pinpoint、zipkin、jaeger 等。各類服務治理的解決方案層出不窮帶來了不少的積極做用,但負面影響也隨之而來,那即是標準的不統1、維護方式各異。服務治理變成了各類中間件的相互嫁接,服務治理的好壞全靠工程師的技術水平高低。基於此,服務治理的標準化、一致化需求愈來愈強烈,因而服務網格便應運而生。服務網格的思想即是將服務治理標準化,並統一下沉到基礎設施層。就像 50、60 年代的美國,當時幫派林立,不一樣地盤治理的好壞主要依靠各個幫派屌不屌,可是到了後來政府能力逐漸強大和穩定,不少地下秩序再也不依靠黑幫,而統一讓政府規則化同樣的道理。

        第四代(4.0 時代):無服務時代,即 serveless 時代,說的時髦點就是去中心化時代。這個目前還並不成熟,本文先略去不談。


3 istio

        istio 就是微服務 3.0 時代的產物,是 service mesh 的表明性產品。由谷歌和 IBM 聯手打造。藉助谷歌的拳頭產品 k8s,頃刻完爆衆神。istio 跟 k8s 之間到底什麼關係?你能夠這麼來理解,k8s 至關於王健林,istio 至關於王思聰。怎麼說呢?k8s 負責打地基,打造基礎設施,istio 負責在地基之上整合各類服務模式。你們都知道有個女的去萬達影院看電影抱怨爆米花少,結果王思聰承諾給她終生免費提供爆米花的事吧。這就至關於請求失敗並重試成功的典型服務治理案例。

        istio 包括以下特性:

1 http, gRPC, WebSocket 和 TCP 通訊的自動負載均衡

2 經過豐富的路有規則、重試、故障轉移和故障注入對流量行爲進行細粒度控制

3 可插拔的策略層和配置 API,支持訪問控制,速率限制和配額

4 集羣內全部流量的自動度量,日誌和跟蹤,包括集羣的入口和出口

5 經過強大的基於身份和身份驗證和受權,在集羣中實現安全的服務間通訊

        簡單總結即是:istio 負責網絡數據包的流量管理(traffic management)、服務的安全保護(secure)、策略(policy,好比黑白名單制定)和可觀察(observability,好比監控)。


4 istio 使用

        逼逼完了理論後(其實我最不喜歡就是扯理論),開始進入完爆 istio 環節。

4.1 下載 istio

        在玩 istio 以前,必需要有前置條件,那就是你要先把 k8s 完爆了,你須要首先搭建 k8s 環境。怎麼搭建 k8s,你能夠參考本人的《一分鐘搭建 k8s 教程》,不用謝。

        使用以下語句下載 istio,下載速度會有點慢。至於有多慢?誰試誰知道。並且時不時會斷,因此你要時刻關注,若是失敗了,須要從新執行。這種感受就好像你在小便,後面老是有人推你,讓你整個過程很是不暢,很是不爽。

curl -L https://istio.io/downloadIstio | sh -

        在下載過程當中,若是你遭遇以下錯誤:

Unable to get latest Istio version. Set ISTIO_VERSION env var and re-run. For example: export ISTIO_VERSION=1.0.4

        你須要設置一下你要下載的 istio 版本,語句以下:

export ISTIO_VERSION=1.4.5

        下載成功後的截圖以下:clipboard2.png

4.2 安裝 istio

        安裝 istio 前,首先解壓縮:

tar -zxvf istio-1.4.5-linux.tar.gz

        解壓縮後的目錄結構截圖以下:clipboard3.png

        關鍵目錄說明以下:

install/kubernetes # istio 資源文件

samples # istio 樣例

bin/istioctl # istio 客戶端工具,用來手動注入 envoy

4.3 配置 istioctl 工具路徑

        istioctl 是 istio 的客戶端工具,其做用是手動注入 envoy 做爲容器的 sidecar(邊車)。什麼是 sidecar?你就把它當成雞你太美的經紀人,懂了沒?就是負責跟外界打交道的。配置方式以下:

cd istio-1.4.5

export PATH=$PATH:$PWD/bin

        配置完,在 bash 中就能夠經過 Tab 鍵自動補全 istioctl 命令了。可是這樣夠嗎?完美嗎?固然不。咱們還有更高的要求。

        由於 istioctl 有不少配置項,僅僅使用 tab 鍵只能自動補全 istioctl,可是沒法自動補全 istioctl manifest 相似這樣的子命令。所以咱們須要設置加強自動補全功能。

4.4 實現 istioctl 自動補全功能

        將 istio 安裝包內 tools 目錄下的 istioctl.bash 文件拷貝到用戶根目錄下:

cp istio/istio-1.4.5/tools/istioctl.bash ~

        編輯 ~/.bash_profile 文件,在文件末尾添加以下內容:

source ~/istioctl.bash

        添加完畢後,加載配置使配置生效:

source ~/.bash_profile

        而後輸入 istioctl 而後按兩次 tab 鍵,發現加強自動補全功能已經生效:clipboard4.png

4.5 安裝學習版 istio

        爲了下降學習成本,咱們選擇安裝學習版本的 istio。若是你想直接在生產環境安裝 istio,能夠參考我後續的章節。

        執行以下語句安裝 istio 學習版:

istioctl manifest apply --set profile=demo

        安裝後的截圖以下:

clipboard5.png

        不要一看到 Installation complete 就高興到尖叫!由於安裝完畢不報錯並不意味着你就成功了,就像你看到一個美麗、性感、火辣、清純、高貴、華麗集一身的女人向你走過來時就覺得人家以爲你長得帥想泡你同樣的道理。

        使用以下命令查看一下 istio 的服務狀態:

kubectl get svc -n istio-system

        執行結果以下圖所示:clipboard6.png

        服務使用 LoadBalancer 類型通常是在第三方雲廠商支持下才有用。若是你是在本身搭建的 k8s 集羣環境下通常使用 NodePort 類型。執行以下語句完爆:

kubectl patch svc -n istio-system istio-ingressgateway -p '{"spec": {"type": "NodePort"}}'

        執行完畢後,再次查看 svc,發現原來的 LoadBalancer 類型已經被修改成 NodePort 類型,此外 external-ip 也從 pending 狀態變成了 <none>(即:不須要)狀態。clipboard7.png

        查看 istio 的 pod 運行狀態:

kubectl get pod -n istio-system

        運行狀態截圖以下,全部 pod 狀態都是 running 狀態:clipboard8.png

        自此,整個 istio 環境就被你輕鬆完爆了。如今你能夠停下來,上廁所,喝水和尖叫了。

4.6 卸載 istio

        可是假如你以爲不夠爽,光有創建的快感,沒有破壞的快感老是以爲技術人生不夠圓滿的話,你能夠執行以下語句輕鬆完爆 istio。

istioctl manifest generate --set profile=demo | kubectl delete -f -


5 總結

        好了,一切都回到了原點。這種感受像極了你擁有了一個女人,而後蹂躪了一番後,又拋棄她的感受。可是望着消失了一切後的黑乎乎的屏幕後,你或許點燃了一顆煙,問問本身,拋棄的感受是否真的快樂?若是沒有,你就把文章拉倒起點,再來一遍吧。也許當你操做完後,你會從新追回你深愛的她。

相關文章
相關標籤/搜索