在前述 k8s集群 后续追加新节点 配置好集群后,安装配置ServiceMesh首屈一指的Istio。
1 环境说明
框架 | 版本 | 功能 |
---|---|---|
Kubernetes | 1.20.1 | K8S集群 |
Istio | 1.8 | ServiceMesh |
2 下载 Istio
2.1 解压并切换到 Istio 包所在目录下
$ cd /usr/local/
$ curl -L https://istio.io/downloadIstio | sh -
$ cd istio-1.8.1
$ tree -L 3
.
├── bin
│ └── istioctl
├── LICENSE
├── manifests
│ ├── charts
│ │ ├── base
│ │ ├── gateways
│ │ ├── global.yaml
│ │ ├── istio-cni
│ │ ├── istio-control
│ │ ├── istiocoredns
│ │ ├── istiod-remote
│ │ ├── istio-operator
│ │ ├── README-helm3.md
│ │ ├── README.md
│ │ └── UPDATING-CHARTS.md
│ ├── examples
│ │ ├── customresource
│ │ ├── multicluster
│ │ ├── user-gateway
│ │ └── vm
│ └── profiles
│ ├── default.yaml
│ ├── demo.yaml
│ ├── empty.yaml
│ ├── minimal.yaml
│ ├── openshift.yaml
│ ├── preview.yaml
│ ├── PROFILES.md
│ └── remote.yaml
├── manifest.yaml
├── README.md
├── samples
│ ├── addons
│ │ ├── extras
│ │ ├── grafana.yaml
│ │ ├── jaeger.yaml
│ │ ├── kiali.yaml
│ │ ├── prometheus.yaml
│ │ └── README.md
│ ├── bookinfo
│ │ ├── build_push_update_images.sh
│ │ ├── networking
│ │ ├── platform
│ │ ├── policy
│ │ ├── README.md
│ │ ├── src
│ │ └── swagger.yaml
│ ├── certs
│ │ ├── ca-cert.pem
│ │ ├── ca-key.pem
│ │ ├── cert-chain.pem
│ │ ├── generate-workload.sh
│ │ ├── README.md
│ │ ├── root-cert.pem
│ │ ├── workload-bar-cert.pem
│ │ ├── workload-bar-key.pem
│ │ ├── workload-foo-cert.pem
│ │ └── workload-foo-key.pem
│ ├── custom-bootstrap
│ │ ├── custom-bootstrap.yaml
│ │ ├── example-app.yaml
│ │ └── README.md
│ ├── external
│ │ ├── aptget.yaml
│ │ ├── github.yaml
│ │ ├── pypi.yaml
│ │ └── README.md
│ ├── health-check
│ │ ├── liveness-command.yaml
│ │ └── liveness-http-same-port.yaml
│ ├── helloworld
│ │ ├── gen-helloworld.sh
│ │ ├── helloworld-gateway.yaml
│ │ ├── helloworld.yaml
│ │ ├── loadgen.sh
│ │ ├── README.md
│ │ └── src
│ ├── httpbin
│ │ ├── httpbin-gateway.yaml
│ │ ├── httpbin-nodeport.yaml
│ │ ├── httpbin-vault.yaml
│ │ ├── httpbin.yaml
│ │ ├── README.md
│ │ └── sample-client
│ ├── https
│ │ ├── default.conf
│ │ └── nginx-app.yaml
│ ├── kubernetes-blog
│ │ ├── bookinfo-ratings.yaml
│ │ ├── bookinfo-reviews-v2.yaml
│ │ └── bookinfo-v1.yaml
│ ├── multicluster
│ │ ├── expose-istiod.yaml
│ │ ├── expose-services.yaml
│ │ ├── gen-eastwest-gateway.sh
│ │ └── README.md
│ ├── operator
│ │ ├── cni-on.yaml
│ │ ├── default-install.yaml
│ │ ├── pilot-advanced-override.yaml
│ │ ├── pilot-k8s.yaml
│ │ ├── values-global.yaml
│ │ └── values-pilot.yaml
│ ├── rawvm
│ │ ├── demo.sh
│ │ ├── Makefile
│ │ └── README.md
│ ├── README.md
│ ├── security
│ │ └── psp
│ ├── sleep
│ │ ├── README.md
│ │ ├── sleep-vault.yaml
│ │ └── sleep.yaml
│ ├── tcp-echo
│ │ ├── README.md
│ │ ├── src
│ │ ├── tcp-echo-20-v2.yaml
│ │ ├── tcp-echo-all-v1.yaml
│ │ ├── tcp-echo-services.yaml
│ │ └── tcp-echo.yaml
│ └── websockets
│ ├── app.yaml
│ ├── README.md
│ └── route.yaml
└── tools
├── certs
│ ├── common.mk
│ ├── Makefile.k8s.mk
│ ├── Makefile.selfsigned.mk
│ └── README.md
├── dump_kubernetes.sh
├── _istioctl
└── istioctl.bash
45 directories, 90 files
安装目录包含如下内容:
-
samples/
目录下,有示例应用程序 -
bin/
目录下,包含istioctl
的客户端文件。istioctl
工具用于手动注入 Envoy sidecar 代理。
2.2 将 istioctl
客户端路径增加到 path 环境变量中
$ vi /etc/profile
$ export PATH=/usr/local/istio-1.8.1/bin:$PATH
$ source /etc/profile
2.3 开启自动补全
$ cp /usr/local/istio-1.8.1/tools/istioctl.bash $HOME/
$ source ~/istioctl.bash
3 安装 Istio
3.1 安装 default配置
$ cd /usr/local/istio-1.8.1
$ istioctl install
This will install the Istio default profile with ["Istio core" "Istiod" "Ingress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
- Pruning removed resources Removed PodDisruptionBudget:istio-system:istio-egressgateway.
Removed Deployment:istio-system:istio-egressgateway.
Removed Service:istio-system:istio-egressgateway.
Removed ServiceAccount:istio-system:istio-egressgateway-service-account.
Removed RoleBinding:istio-system:istio-egressgateway-sds.
Removed Role:istio-system:istio-egressgateway-sds.
✔ Installation complete
3.2 安装demo配置
此处安装时候会花些功夫,如果第一次安装失败,多装几回
$ cd /usr/local/istio-1.8.1
$ istioctl install --set profile=demo -y
This will install the Istio demo profile with ["Istio core" "Istiod" "Ingress gateways" "Egress
✔ Istio core installed
- Processing resources for Istiod. ✔ Istiod installed
✔ Ingress gateways installed
✔ Egress gateways installed
- Pruning removed resources Removed HorizontalPodAutoscaler:istio-system:istio-ingressgateway.
Removed HorizontalPodAutoscaler:istio-system:istiod.
✔ Installation complete
3.3 检查安装状态
$ kubectl -n istio-system get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
istio-egressgateway 1/1 1 1 7m4s
istio-ingressgateway 1/1 1 1 15m
istiod 1/1 1 1 15m
4 卸载istio
要从集群中完整卸载Istio
$ istioctl x uninstall --purge
控制平面的命名空间,删除istio-system
$ kubectl delete namespace istio-system