天天看點

istio1.9安裝

背景

服務網格小白
其實看官方文檔寫的特别清楚
           

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)是一條舔狗,天天盯着大螢幕生怕漏掉你的指令,突然看到了你的消息開開心心的告訴趙小姐,“小姐、外公讓您今晚等着他!”,趙小姐聽話的去。。。後面自己想。

繼續閱讀