Istio 1.2.3 安裝部署

先決條件

  1. 安裝Kubernetes
  2. 安裝 Helm ( 版本高于 2.10)凡人。

部署步驟

使用 Helm 部署 Istio主要有以下兩個(gè)步驟:

  1. 下載 Istio 發(fā)布包
  2. 部署 Istio

1. 下載 Istio 發(fā)布包

主要步驟:

  1. 下載和自動(dòng)解壓縮 Istio 發(fā)布包
  2. 配置 Istio 環(huán)境變量
  1. 下載和自動(dòng)解壓縮 Istio 發(fā)布包

    curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.2.3 sh -
    

    版本選擇可以參考: Istio release 頁面

  2. 配置 Istio 環(huán)境變量

    cd istio-1.2.3
    export PATH=$PWD/bin:$PATH
    

2. 部署 Istio

主要步驟:

  1. 改造 Tiller 客戶端(為 Tiller 配置 Service account)
  2. 安裝 istio-init(用于啟動(dòng) Istio CRD 的安裝過程)
  3. 部署 Istio (采用 demo 配置文件)
  1. 改造 Tiller 客戶端(為 Tiller 配置 Service account)
  • 卸載原有的 Tiller 客戶端

    helm reset
    
  • 創(chuàng)建一個(gè) Tiller 的 Service account

    cd istio-1.2.3
    kubectl apply -f install/kubernetes/helm/helm-service-account.yaml
    
  • 安裝 Tiller 并為其配置 Service account :

    helm init --upgrade \
    -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 \
    --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts \
    --service-account tiller
    

    注:這里修改了另外兩點(diǎn):
    1.設(shè)置 Tiller 的安裝源為阿里云源
    2.設(shè)置 Helm 的穩(wěn)定存儲(chǔ)庫為阿里云的倉庫

  1. 安裝 istio-init(用于啟動(dòng) Istio CRD 的安裝過程)
    helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system --set certmanager.enabled=true
    
    注:這里啟用了 cert-manager
  • 驗(yàn)證 CRD
     kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l
    
    注:啟用了 cert-manager 時(shí)鸭栖,CRD 的個(gè)數(shù)為 28 個(gè)篡帕,否則為 26 個(gè)
  1. 部署 Istio (采用 demo 配置文件)

    helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
    --values install/kubernetes/helm/istio/values-istio-demo.yaml
    

    注:雖然官方推薦的是使用 default 配置文件,但從官方的詳細(xì)說明來看 demo 配置文件提供的功能更加完善罢绽,詳細(xì)參考:https://istio.io/docs/setup/kubernetes/additional-setup/config-profiles/

  2. 卸載 Istio

    helm delete --purge istio
    helm delete --purge istio-init
    

到這里,Istio 就已經(jīng)安裝完成了,但是由于不是托管云的原因出吹,故還需對 Ingress-Gateway 進(jìn)行適當(dāng)改造

改造 Ingress-Gateway

在 Kubernetes 中,可以使用 Ingress 資源將集群內(nèi)部的Service暴露到集群外部辙喂。
在 Istio 中捶牢,則推薦使用另一個(gè)更好的配置模型:Istio Gateway鸠珠。
原因:Istio Gateway 可以允許我們將 Istio 的功能(如:監(jiān)控和路由規(guī)則)應(yīng)用到進(jìn)入集群的流量。

Istio 部署時(shí)秋麸,同時(shí)也為我們安裝了 Ingress-Gateway渐排,且 Service 的類型為 LoadBalancer。由于不是公有云上的托管云灸蟆,LoadBalancer 不能為我們分配合適的 EXTERNAL-IP驯耻,故需要進(jìn)行一定的改造。改造的主要步驟如下:

  1. 修改 istio-ingressgateway 的 Service 參數(shù)
  2. 修改 istio-ingressgateway 的 Deployment 參數(shù)
  3. 刪除 istio-ingressgateway 的水平擴(kuò)展 HPA
  1. 修改 istio-ingressgateway 的 Service 參數(shù)
  • 類型:type: ClusterIP

  • 刪除各個(gè) nodePort

    kubectl edit svc istio-ingressgateway -n istio-system
    

    修改后炒考,如下:

    apiVersion: v1
    kind: Service
    metadata:
    ......
    spec:
      clusterIP: 10.108.91.43
      ports:
      - name: status-port
        port: 15020
        protocol: TCP
        targetPort: 15020
      - name: http2
        port: 80
        protocol: TCP
        targetPort: 80
      - name: https
        port: 443
        protocol: TCP
        targetPort: 443
      - name: tcp
        port: 31400
        protocol: TCP
        targetPort: 31400
      - name: https-kiali
        port: 15029
        protocol: TCP
         targetPort: 15029
      - name: https-prometheus
        port: 15030
        protocol: TCP
        targetPort: 15030
      - name: https-grafana
        port: 15031
        protocol: TCP
        targetPort: 15031
      - name: https-tracing
        port: 15032
        protocol: TCP
        targetPort: 15032
      - name: tls
        port: 15443
        protocol: TCP
        targetPort: 15443
      selector:
        app: istio-ingressgateway
        istio: ingressgateway
      release: istio
      sessionAffinity: None
      type: ClusterIP
    
  1. 修改 istio-ingressgateway 的 Deployment 參數(shù)
  • 網(wǎng)絡(luò)設(shè)置:hostNetwork: true可缚、dnsPolicy: ClusterFirstWithHostNet
  • Node 親和性調(diào)度:nodeAffinity
  • Pod 反親和性調(diào)度:podAntiAffinity
    kubectl edit deploy istio-ingressgateway -n istio-system
    
    修改后,如下
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    ......
    spec:
      replicas: 2
      ......
      template:
        spec:
          ......
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: node-role.kubernetes.io/edge
                    operator: Exists
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - topologyKey: kubernetes.io/hostname
                labelSelector:
                   matchExpressions:
                   - key: app
                     operator: In
                     values:
                     - istio-ingressgateway
                   - key: istio
                     operator: In
                     values:
                     - ingressgateway
    
  1. 刪除 istio-ingressgateway 的水平擴(kuò)展 HPA
    由于 helm 部署的 istio-ingressgateway斋枢,同時(shí)為其創(chuàng)建了HPA帘靡。因?yàn)槲覀冞@里使用 hostNetwork,即將 istio-ingressgateway 固定調(diào)度到集群中的所有邊緣節(jié)點(diǎn)上瓤帚,所以需要手動(dòng)刪除這個(gè) HPA
    kubectl delete HorizontalPodAutoscaler istio-ingressgateway -n istio-system
    

參考:
https://istio.io/zh/docs/setup/kubernetes/install/helm/
https://blog.frognew.com/2019/01/learning-istio-1.0-8-istio-install-with-helm.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末描姚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戈次,更是在濱河造成了極大的恐慌轩勘,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怯邪,死亡現(xiàn)場離奇詭異绊寻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)悬秉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進(jìn)店門澄步,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搂捧,你說我怎么就攤上這事驮俗。” “怎么了允跑?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵王凑,是天一觀的道長。 經(jīng)常有香客問我聋丝,道長索烹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任弱睦,我火速辦了婚禮百姓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘况木。我一直安慰自己垒拢,他們只是感情好旬迹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著求类,像睡著了一般奔垦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尸疆,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天椿猎,我揣著相機(jī)與錄音,去河邊找鬼寿弱。 笑死犯眠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的症革。 我是一名探鬼主播筐咧,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼地沮!你這毒婦竟也來了嗜浮?” 一聲冷哼從身側(cè)響起羡亩,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤摩疑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后畏铆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雷袋,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年辞居,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了楷怒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓦灶,死狀恐怖鸠删,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贼陶,我是刑警寧澤刃泡,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站碉怔,受9級(jí)特大地震影響烘贴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撮胧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一桨踪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芹啥,春花似錦锻离、人聲如沸铺峭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逛薇。三九已至,卻和暖如春疏虫,著一層夾襖步出監(jiān)牢的瞬間永罚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工卧秘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呢袱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓翅敌,卻偏偏與公主長得像羞福,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蚯涮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評論 2 350