系列文章:nginx
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程web
目錄api
1 前言微信
2 istio 初探app
2.1 手動注入 sidecaride
2.2 自動注入 sidecarspa
1 前言
3d
若是你對博客有任何疑問,請加微信溝通:orm
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 內有一個容器,且該容器運行成功並處於就緒狀態。
下面到了激動人心的時刻了,由於 istio 即將閃亮登場。
2.1 手動注入 sidecar
執行以下語句:
kube-inject -f nginx-deployment.yaml | kubectl apply -n jiuxi -f -
命令執行結果以下圖所示:
此時你會發現一個奇怪的現象,nginx-deployment.yaml 並沒修改,可是 ready 狀態卻變成了 2/2。根據上面的解釋可知,如今 pod 內有兩個容器,且這兩個容器都運行成功並處於就緒狀態。爲何多了一個容器呢?
查看 pod 的詳細信息:
kubectl get pod -n jiuxi nginx-xxxx -o yaml # xxxx 根據本身實際狀況填寫
若是你有相似 rancher 這樣的 web 控制檯,能夠看得更仔細些,以下圖所示。若是你尚未安裝和配置 rancher,你能夠參考哥的輕鬆完爆 rancher 系列進行安裝,放心,容易到爆,容易到你尖叫。
從上圖可知。此時 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 的手動和自動織入功能。