背景
服務網格小白
其實看官方文檔寫的特别清楚
1下載下傳istio
官方是
curl -L https://istio.io/downloadIstio | sh -
但是我網絡不行,是以直接去github下載下傳
https://github.com/istio/istio/releases/tag/1.9.2
解壓縮
目錄結構很簡單
添加環境變量
export PATH=/opt/istio-1.9.2/bin:$PATH
安裝
istioctl install --set profile=demo -y
能看出來istio往k8s中加了pod和svc
部署bookinfo
kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo.yaml)
我嘗試過使用
kubectl label namespace default istio-injection=enabled
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
但是rc會報錯
Warning FailedCreate 94s (x2 over 3m4s) replicaset-controller Error creating: Internal error occurred: failed calling webhook "sidecar-injector.istio.io": Post https://istiod.istio-system.svc:443/inject?timeout=30s: context deadline exceeded
Warning FailedCreate 34s replicaset-controller Error creating: Internal error occurred: failed calling webhook "sidecar-injector.istio.io": Post https://istiod.istio-system.svc:443/inject?timeout=30s: dial tcp 10.109.17.99:443: i/o timeout
我也沒找到解決辦法,原諒我是個菜雞,但核心肯定是自動注入沒成功,是以我改成了上面的手動注入。
對外開放應用程式
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
确定入站 IP 和端口
這個地方我沒有參考官網,官網那堆我現在還看不懂,慢慢後面學習吧,其實他的核心就是在網關做配置,我直接簡單點先不配置網關規則,直接把ClusterIP改為nodeport
通路應用
http://ip:NodePort/productpage
檢視儀表闆
kubectl apply -f samples/addons
kubectl rollout status deployment/kiali -n istio-system
istioctl dashboard kiali
kubectl patch service kiali -n istio-system -p ‘{“spec”:{“type”:“NodePort”}}’
但是這裡我報錯了!
unable to recognize “kiali.yaml”: no matches for kind “MonitoringDashboard” in version “monitoring.kiali.io/v1alpha1”
最終解決方案是
https://blog.csdn.net/qq_41674452/article/details/113345163
添加一個crd,但是我看kiali.yaml裡其實也有crd的配置了不知道為什麼沒成功!
反正自己執行了一次就ok了。
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: monitoringdashboards.monitoring.kiali.io
spec:
group: monitoring.kiali.io
names:
kind: MonitoringDashboard
listKind: MonitoringDashboardList
plural: monitoringdashboards
singular: monitoringdashboard
scope: Namespaced
versions:
- name: v1alpha1
served: true
storage: true
我個人了解crd!就好比k8s給你提供了張小姐(pod)、王小姐(deamonset)、李小姐(statefulset),但是你不滿足你自己非要一個趙小姐(crd),k8s就給你一個接口你自己把趙小姐(crd)給造出來。但是你的趙小姐必須符合k8s的一些規則,你把趙小姐造出來了,趙小姐聽你的k8s不幫你管着!你要單獨雇了一個人小王(controller)專職在k8s那裡幫你管着趙小姐,如果今晚你想讓趙小姐幹點什麼,你就要給k8s的接口人(aipservice)打電話,“喂、今晚你讓趙小姐在家等我!”,接口人(aipservice)“好的大爺”,他會把你的需求寫到大螢幕上(etcd),小王(controller)是一條舔狗,天天盯着大螢幕生怕漏掉你的指令,突然看到了你的消息開開心心的告訴趙小姐,“小姐、外公讓您今晚等着他!”,趙小姐聽話的去。。。後面自己想。