5.1 部署 istio
5.1.1 Istio 版本的支持状态
版本 | 目前支持 | 发行日期 | 停止维护 | 支持的 Kubernetes 版本 | 未测试,可能支持的 Kubernetes 版本 |
---|---|---|---|---|---|
master | 否,仅限开发 | ||||
1.11 | 是 | 2021年8月12日 | ~2022年2月(预期) | 1.19, 1.20, 1.21, 1.22 | 1.16, 1.17, 1.18 |
1.10 | 是 | 2021年5月18日 | ~2021年11月(预期) | 1.18, 1.19, 1.20, 1.21 | 1.16, 1.17, 1.22 |
1.9 | 否 | 2021年2月9日 | 2021年8月24日 | 1.17, 1.18, 1.19, 1.20 | 1.15, 1.16 |
1.8 | 否 | 2020年11月10日 | 2021年5月12日 | 1.16, 1.17, 1.18, 1.19 | 1.15 |
1.7 | 否 | 2020年8月21日 | 2021年2月25日 | 1.16, 1.17, 1.18 | 1.15 |
1.6及更早 | 否 | - |
由于我们部署的 Kubernetes
为1.22版本,通过上面的表可以知道,istio
支持的版本为 1.11
。
5.1.2 没有已知漏洞披露(CVEs)的版本
主版本 | 没有已知 CVEs 的补丁版本 |
---|---|
1.11.x | 1.11.1+ |
1.10.x | 1.10.4+ |
1.9.x | 1.9.8+ |
1.8及更早 | 无 |
5.1.3 下载istio-1.11
下载指定版本通过ISTIO_VERSION
和OS_ARCH
指定,不指定默认下载最新版本,当前最新版本为1.11.1
ISTIO_VERSION=1.11.1
OS_ARCH=amd64
wget https://github.com/istio/istio/releases/download/${ISTIO_VERSION}/istio-${ISTIO_VERSION}-linux-${OS_ARCH}.tar.gz
tar xf istio-${ISTIO_VERSION}-linux-${OS_ARCH}.tar.gz -C /usr/local
解压istioctl二进制文件
tar xf istio-${ISTIO_VERSION}-linux-${OS_ARCH}.tar.gz --strip-components 2 \
-C /usr/local/bin istio-${ISTIO_VERSION}/bin/istioctl
根据官方的介绍有3种安装方式:istioct
安装,helm
安装,operator
安装,使用operator
安装依赖istioctl
另外测试发现operator
安装的默认的镜像在grc.io
仓库,版本为1.4-dev
5.1.4 使用operator
安装istio
部署Istio Operator
istio-operator
默认安装在istio-operator
名称空间下
istioctl operator init
Installing operator controller in namespace: istio-operator using image: docker.io/istio/operator:1.11.1
Operator controller will watch namespaces: istio-system
✔ Istio operator installed
✔ Installation complete
安装istio
kubectl create ns istio-system
kubectl apply -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name: example-istiocontrolplane
spec:
profile: demo
EOF
istiooperator.install.istio.io/example-istiocontrolplane created
Istio Operator
控制器在创建IstioOperator
资源的90秒内启动Istio
的安装。Istio安装过程将在120秒内完成。
检查pods
kubectl get po -n istio-system
NAME READY STATUS RESTARTS AGE
istio-egressgateway-6f9d4548b-5ggbl 1/1 Running 0 50s
istio-ingressgateway-5dc645f586-2qqhr 1/1 Running 0 50s
istiod-65f8649bc-8q4wh 1/1 Running 0 77s
检查services
kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.110.243.82 <none> 80/TCP,443/TCP 62s
istio-ingressgateway LoadBalancer 10.101.76.136 <pending> 15021:32631/TCP,80:30933/TCP,443:31777/TCP,31400:30110/TCP,15443:30541/TCP 62s
istiod ClusterIP 10.111.182.210 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 88s
5.1.5 使用istioctl
安装
不同profile的功能列表:安装配置文件
查看预设的profile
istioctl profile list
Istio configuration profiles:
default
demo
empty
external
minimal
openshift
preview
remote
通过预设的profile进行安装
istioctl install --set profile=demo
查看profile的配置
istioctl profile dump default
istioctl自定义安装
istioctl install --set profile=demo \
--set values.global.imagePullPolicy=IfNotPresent \
--set meshConfig.outboundTrafficPolicy.mode=ALLOW_ANY
This will install the Istio 1.11.1 demo profile with ["Istio core" "Istiod" "Ingress gateways" "Egress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete
Thank you for installing Istio 1.11. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/kWULBRjUv7hHci7T6
卸载istio
istioctl x uninstall --purge
新手建议直接使用default,如果想要体验完整功能则建议使用demo。
istioctl manifest apply --set profile=demo
This will install the Istio 1.11.1 demo profile with ["Istio core" "Istiod" "Ingress gateways" "Egress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete
Thank you for installing Istio 1.11. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/kWULBRjUv7hHci7T6
检查运行状态
kubectl get po -n istio-system
输出如下
NAME READY STATUS RESTARTS AGE
istio-egressgateway-6f9d4548b-przfm 1/1 Running 0 70s
istio-ingressgateway-5dc645f586-c8z6s 1/1 Running 0 70s
istiod-79b65d448f-wflf5 1/1 Running 0 100s
查看svc
kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.100.153.42 <none> 80/TCP,443/TCP 80s
istio-ingressgateway LoadBalancer 10.110.200.116 <pending> 15021:30161/TCP,80:31197/TCP,443:30715/TCP,31400:30986/TCP,15443:30867/TCP 80s
istiod ClusterIP 10.106.31.251 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 111s
修改为NodePort
kubectl patch -n istio-system svc istio-ingressgateway -p '{"spec": {"type": "NodePort"}}'
service/istio-ingressgateway patched
再次查看
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.100.153.42 <none> 80/TCP,443/TCP 100s
istio-ingressgateway NodePort 10.110.200.116 <none> 15021:30161/TCP,80:31197/TCP,443:30715/TCP,31400:30986/TCP,15443:30867/TCP 100s
istiod ClusterIP 10.106.31.251 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 2m11s