[DAY21]Istio-手把手教安装

安装Istio前要确认一下目前k8s版本跟要安装的istio版本是否支援

https://ithelp.ithome.com.tw/upload/images/20210927/20129515XoBE8uNQNZ.png

目前最新版的istio的k8s地板已经是1.19了= =

下载istio

这边的istio版本为1.11.3,如果有需要执行istioctl可以加入istioctl的path

curl -L https://istio.io/downloadIstio | sh -
Downloading istio-1.11.3 from https://github.com/istio/istio/releases/download/1.11.3/istio-1.11.3-osx.tar.gz ...
Istio 1.11.3 Download Complete!

Istio has been successfully downloaded into the istio-1.11.3 folder on your system.

Next Steps:
See https://istio.io/latest/docs/setup/install/ to add Istio to your Kubernetes cluster.

To configure the istioctl client tool for your workstation,
add the /Users/your_name/istio-1.11.3/bin directory to your environment path variable with:
	 export PATH="$PATH:/Users/your_name/istio-1.11.3/bin"

如果想要下载指定档案可以使用以下指令

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.11.2 TARGET_ARCH=x86_64 sh -

打开istio来看看,如果看到这些folder就没错啦~
https://ithelp.ithome.com.tw/upload/images/20210927/20129515ZXcVcdGDsv.png

部署istio

官网是什麽istioctl进行安装,这边就使用前面介绍的helm来安装吧!

先确认自己在哪个context,对k8s进行部署前都要先确认一下比较安全

kubectl config current-context

建立namespace istio-system,为什麽叫istio-system吗?打完看一下values的设定就知道了/images/emoticon/emoticon01.gif

kubectl create namespace istio-system

安装istio基础元件

helm install istio-base manifests/charts/base -n istio-system
NAME: istio-base
LAST DEPLOYED: Tue Sep 28 09:35:10 2021
NAMESPACE: istio-system
STATUS: deployed
REVISION: 1
TEST SUITE: None

安装istiod 全家桶

helm install istiod manifests/charts/istio-control/istio-discovery -n istio-system
NAME: istiod
LAST DEPLOYED: Tue Sep 28 09:36:04 2021
NAMESPACE: istio-system
STATUS: deployed
REVISION: 1
TEST SUITE: None

安装istio ingress/egress,如果会有外部流量进来的需求时就要装istio-ingress,需要导流量至外部时就装

helm install istio-ingress manifests/charts/gateways/istio-ingress -n istio-system
helm install istio-egress manifests/charts/gateways/istio-egress -n istio-system

检验是否istio安装完成

helm这边都有deployed 加上 istio的pod都有正常启动

helm ls -ANAME            NAMESPACE       REVISION        UPDATED                             STATUS   CHART                   APP VERSION
istio-base      istio-system    1               2021-09-28 10:42:49.10494 +0800 CST deployed base-1.11.3                        
istio-egress    istio-system    1               2021-09-28 11:27:06.46828 +0800 CST deployed istio-egress-1.11.3                
istio-ingress   istio-system    2               2021-09-28 11:25:58.629334 +0800 CSTdeployed istio-ingress-1.11.3               
istiod          istio-system    2               2021-09-28 11:06:49.568821 +0800 CSTdeployed istio-discovery-1.11.3             

kubectl get pods -n istio-system
NAME                                    READY   STATUS    RESTARTS   AGE
istio-egressgateway-5f6bd66bcd-mtdqs    1/1     Running   0          3m54s
istio-ingressgateway-86b7fdcc6c-cf7nc   1/1     Running   0          5m2s
istiod-7c486676f8-gbppd                 1/1     Running   0          24m

加上istio-injection

istio-injection是以namespace来做注入,所以要帮namesapce加上label

kubectl label namespace default istio-injection=enabled

测试部署服务

这边就直接使用istio 1.11.3里面的sample/bookinfo的yaml来测试

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

这时候如果发现deployment部署不起来时,如果错误为

Error creating: Internal error occurred: failed calling webhook "namespace.sidecar-injector.istio.io": Post "https://istiod.istio-system.svc:443/inject?timeout=10s": context deadline exceeded

这是k8s node的防火墙没有开启15017跟9443这二个port喔

移除istio

helm ls -n istio-system
NAME            NAMESPACE       REVISIONUPDATED                             STATUS   CHART                   APP VERSION
istio-base      istio-system    1               2021-09-28 10:42:49.10494 +0800 CST deployed base-1.11.3                        
istio-egress    istio-system    1               2021-09-28 11:27:06.46828 +0800 CST deployed istio-egress-1.11.3                
istio-ingress   istio-system    2               2021-09-28 11:25:58.629334 +0800 CSTdeployed istio-ingress-1.11.3               
istiod          istio-system    2               2021-09-28 11:06:49.568821 +0800 CSTdeployed istio-discovery-1.11.3     

helm delete istio-egress
helm delete istio-ingress 
helm delete istiod
helm delete istio-base
kubectl delete namespace istio-system
kubectl label namespace default istio-injection-

基本上helm delete已经把部署上去的istio相关component都移除了啦~~


<<:  [Day 14] tinyML开发框架(二):Arm CMSIS 简介

>>:  Day 14 Flask 传入参数

Day 20 [Python ML、资料视觉化] 折线图

设定jupyter notebook import pandas as pd pd.plotting...

ISO 27001 资讯安全管理系统 【解析】(十八)

第二个要考量的风险是针对资讯安全管理系统范围内的机密性、完整性及可用性损害的风险,在此我想要开始用完...

#20 No-code 之旅 — Analytics ft. Google Analytics & Splitbee

嗨!今天的主题是加 analytics 到网站 (专案) 里~ 讲到 analytics,大家通常会...

Day 28 Work With Elastic Cloud

Day 28 Work With Elastic Cloud 前言 昨天我们讲解完了若是希望能够蒐集...

[Python] 来自己建立一个Neural Network吧

前几天大概说明了NN的概念,今天就用python来实现一下~我主要是使用Colab来执行,因为在Co...