在 Minikube 中安装 Istio

Istio无疑是现在最流行的服务网格开源实现。它以透明层的方式构建在现有分布式应用中,同时也提供了各种API,可以与任何日志平台、监控系统或策略系统集成。Istio的多样化特性可以让你高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监控微服务。本文介绍如何在 Minikube中安装 Istio,以方便开发者学习、使用 Istio 相关的知识。

启动 Minikube

首先,在本机启动已经安装好的 Minikube (如果还没有安装 Minikube, 可以参考在 Apple M1 电脑中安装 minikube进行安装), 执行

1
minikube start

如果成功启动,可以看到类似以下的系统输出

1
2
3
4
5
6
7
8
9
10
11
12
13
😄  Darwin 12.4 (arm64) 上的 minikube v1.24.0
✨ 根据现有的配置文件使用 docker 驱动程序
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔄 Restarting existing docker container for "minikube" ...
🐳 正在 Docker 20.10.8 中准备 Kubernetes v1.22.3…
🔎 Verifying Kubernetes components...
▪ Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass

❗ /usr/local/bin/kubectl is version 1.24.0, which may have incompatibilites with Kubernetes 1.22.3.
▪ Want kubectl v1.22.3? Try 'minikube kubectl -- get pods -A'
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

下载 Istio

直接在命令行执行

1
curl -L https://istio.io/downloadIstio | sh -

也可以直接到 Istio 的 release 页面直接选择对应的版本进行下载, 因为要安装在 Apple M1 电脑上,我们选择 osx-arm64 的这个版本。

下载完成后,进入 isito-1.14.2 目录。因为我们默认的安装目录是 ~\Devel\isito-1.14.2, 所以执行

1
cd ~\Devel\isito-1.14.2

将 ~\Devel\isito-1.14.2\bin 添加到系统 PATH 中去。

如果你使用的是 macOS 默认的 zsh, 则编辑用户目录下的 .zprofile, 加入类似下面的一行

1
export PATH="$PATH:/Users/xxx/Devel/istio-1.14.2/bin"

注意:用你的用户名替换上一行中的 xxx

为让修改立即生效,可以执行

1
source ~/.zprofile

检测是否可以正常安装

执行

1
istioctl x precheck

**在 MacOS 中第一次执行时,会出现安全提醒,到”系统偏好设置“ -> “安全性与隐私” 中去同意

如果看到类似以下的系统输出,则说明 istio 可以在你的系统中正常安装。

1
2
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
To get started, check out https://istio.io/latest/docs/setup/getting-started/

安装

执行

1
istioctl install

如果看到系统显示类似以下的信息,则表明安装成功

1
2
3
4
5
6
7
This will install the Istio 1.14.2 default profile with ["Istio core" "Istiod" "Ingress gateways"] components into the cluster. Proceed? (y/N) y
✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
✔ Installation complete Making this installation the default for injection and validation.

Thank you for installing Istio 1.14. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/yEtCbt45FZ3VoDT5A

验证

执行

1
kubectl get ns

可以看到系统显示如下信息

1
2
3
4
5
6
NAME              STATUS   AGE
default Active 211d
istio-system Active 26m
kube-node-lease Active 211d
kube-public Active 211d
kube-system Active 211d

其中, istio-system 就是 istio 相关系统组件使用的命名空间

执行

1
kubectl get pods -n istio-system

查看 istio-system 中的 pod

1
2
3
NAME                                   READY   STATUS    RESTARTS   AGE
istio-ingressgateway-f65885448-psxjh 1/1 Running 0 26m
istiod-5cdcff89c6-4lvvz 1/1 Running 0 28m

可以看到, istio 在 minikube 中安装了两个 pod, 分别是 istio-ingressgateway 和 istiod

执行

1
kubectl get svc  -n istio-system

可以查看对应的服务

1
2
3
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      AGE
istio-ingressgateway LoadBalancer 10.98.168.55 <pending> 15021:30788/TCP,80:32586/TCP,443:30008/TCP 29m
istiod ClusterIP 10.96.193.232 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 30m

本文标题:在 Minikube 中安装 Istio

文章作者:Morning Star

发布时间:2022年07月28日 - 09:07

最后更新:2022年07月28日 - 09:07

原始链接:https://www.mls-tech.info/microservice/k8s/istio-on-minikube_cn/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。