第二章 九析帶你輕鬆完爆服務網格 - istio 初探

系列文章:nginx


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

目錄api

1 前言微信

2 istio 初探app

    2.1 手動注入 sidecaride

    2.2 自動注入 sidecarspa


1 前言
3d

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

1.jpg


2 istio 初探
blog

        上節九析帶你輕鬆完爆了 istio 的安裝。可是我相信安裝成功的小夥伴依然雲裏霧裏,由於看着一大坨 pod 在那裏 running 着,彷佛並無產生任何做用。這節,九析就帶你「莫畏浮雲遮望眼,守得雲開見月明」。爲了預期效果,咱們不妨先創建一個 deployment,內容以下:

apiVersion: apps/v1

kind: Deployment

metadata:

    name: nginx

    labels:

        app: nginx

spec:

    replicas: 1

    selector:

        matchLabels:

            app: nginx

    template:

        metadata:

            labels:

                app: nginx

        spec:

            containers:

            -  name: nginx

                image: nginx:1.14-alpine

                ports:

                - containerPort: 80

        建立 deployment,固然爲了讓你能更深入地記住哥,把哥印在靈魂深處,你須要首先建立一個命名空間:

kubectl create ns jiuxi

kubectl apply -f nginx-deployment.yaml -n jiuxi

        命令執行成功後,查詢 nginx pod 狀態:

kubectl get pods -n jiuxi

        截圖以下:須要注意 ready 這一列,內容爲 1/1,表示的含義是 pod 內有一個容器,且該容器運行成功並處於就緒狀態。clipboard2.png

        下面到了激動人心的時刻了,由於 istio 即將閃亮登場。

2.1 手動注入 sidecar

        執行以下語句:

kube-inject -f nginx-deployment.yaml | kubectl apply  -n jiuxi -f -

        命令執行結果以下圖所示:clipboard3.png

        此時你會發現一個奇怪的現象,nginx-deployment.yaml 並沒修改,可是 ready 狀態卻變成了 2/2。根據上面的解釋可知,如今 pod 內有兩個容器,且這兩個容器都運行成功並處於就緒狀態。爲何多了一個容器呢?

        查看 pod 的詳細信息:

kubectl get pod -n jiuxi nginx-xxxx -o yaml # xxxx 根據本身實際狀況填寫

        若是你有相似 rancher 這樣的 web 控制檯,能夠看得更仔細些,以下圖所示。若是你尚未安裝和配置 rancher,你能夠參考哥的輕鬆完爆 rancher 系列進行安裝,放心,容易到爆,容易到你尖叫。clipboard4.png

        從上圖可知。此時 nginx pod 內部一共有 3 個容器,一個初始化容器 istio-init 已經運行成功並結束了,一個就是 nginx 本尊,另一個就是本文的主角 istio-proxy 了,它就是 sidecar,做用跟雞你太美的經紀人的做用差很少,負責跟外部打交道用的。

        此時此刻,你已經爲 pod 手工織入了 istio。可是這樣彷佛有點不夠爽。由於每創建一個 pod 都擼這麼一管,感受有點累,有沒有批量或者更天然的方式呢?

2.2 命名空間注入 sidecar

        如今咱們刪除掉剛纔建立的 nginx:

kubectl delete deployments.apps nginx -n jiuxi

        執行以下命令在命名空間內實現自動注入 sidecar:

kubectl label namespaces jiuxi istio-injection=enabled

kubectl get ns jiuxi --show-labels # 查看 label 是否成功建立

        再次根據 nginx-deployment.yaml 文件建立 nginx deployment:

kubectl apply -f nginx-deployment.yaml -n jiuxi

        建立成功後查看 pod 信息,發現已經自動織入了 sidecar。

        自此,本節九析帶你輕鬆完爆了 istio 的手動和自動織入功能。

相關文章
相關標籤/搜索