Istio 是一个开源的服务网格,用于连接、管理和保护微服务。以下是下载并安装 Istio 的步骤。
官网文档:https://istio.io/latest/zh/docs/setup/getting-started/
下载 Istio
前往Istio 发布页面下载适用于您的操作系统的安装文件,或者自动下载并提取最新版本(Linux 或 macOS):
curl -L https://mirror.ghproxy.com/https://raw.githubusercontent.com/istio/istio/master/release/downloadIstioCandidate.sh | sh -
执行上述命令后,您将看到如下输出::
Istio 1.22.1 Download Complete!
Istio has been successfully downloaded into the istio-1.22.1 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 /opt/istio-1.22.1/bin directory to your environment path variable with:
export PATH="$PATH:/opt/istio-1.22.1/bin"
Begin the Istio pre-installation check by running:
istioctl x precheck
Need more information? Visit https://istio.io/latest/docs/setup/install/
root@slave1:/opt#
通过打印版本的命令来检查您是否能够运行 istioctl。 此时,Istio 尚未安装在您的集群中,因此您将看到没有 Pod 就绪
istioctl version
下载完成后,移至 Istio 包目录。例如,如果包是 istio-1.22.1,则运行以下命令:
cd istio-1.22.1
安装目录包含以下内容:
- 示例应用程序samples/
- istioctl客户端二进制 文件 bin/
将istioctl客户端添加到您的路径(Linux 或 macOS):
export PATH=$PWD/bin:$PATH
安装 Istio
对于此安装,我们使用默认 配置文件。当然,您也可以选择其他配置文件以适应生产或性能测试需求。
运行以下命令安装 Istio 默认配置档:
istioctl install
此命令在 Kubernetes 集群上安装 default 配置档。 default 配置档是建立生产环境的一个良好起点, 这和较大的 demo 配置档不同,后者常用于评估一组广泛的 Istio 特性。
可以配置各种设置来修改安装。比如,要启动访问日志:
istioctl install --set meshConfig.accessLogFile=/dev/stdout
也可以使用 -f 传递配置文件。 这么做可以让例子更紧凑。 这两种方法是等价的,但强烈推荐在生产环境使用 -f。 上面的命令可以用 -f 写成如下的形式
cat <<EOF > ./my-config.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
accessLogFile: /dev/stdout
EOF
istioctl install -f my-config.yaml
其他的 Istio 配置档,可以通过在命令行传递配置档名称的方式,安装到集群。 例如,下面命令可以用来安装 demo 配置档。
istioctl install --set profile=demo
您可以用下面命令展示 istioctl 可以访问到的 Istio 配置档的名称:
istioctl profile list
您可以浏览一个配置档的配置信息。例如,运行下面命令浏览 demo 配置档的设置信息:
istioctl profile dump demo
只浏览配置文件的某个部分的话,可以用 --config-path 参数,它将只选择配置文件中指定路径的局部内容:
istioctl profile dump --config-path components.pilot demo
profile diff 子命令可用于显示配置档之间的差异, 它在把更改应用到集群之前,检查定制效果方面非常有用。
istioctl profile diff default demo
在安装 Istio 之前,可以用 manifest generate 子命令生成清单文件。 例如,用下面命令生成 default 配置档的清单文件:
istioctl manifest generate > $HOME/generated-manifest.yaml
生成的清单文件可用于检查具体安装了什么,也可用于跟踪清单是如何随着时间而改变的。 虽然 IstioOperator CR 代表完整的用户配置,足以用于跟踪, 但 manifest generate 命令的输出还能截获底层 chart 潜在的改变,因此可以用于跟踪实际安装过的资源。
manifest generate 的输出还能传递给 kubectl apply 或类似的命令,用来安装 Istio。 然而,这些替代的安装方法不能像 istioctl install 那样,将相同的依赖顺序应用于资源, 并且也没有在 Istio 发行版中测试过,所以不建议kubectl apply来install 参考:https://istio.io/latest/zh/docs/setup/install/istioctl/
要从集群中完整卸载 Istio,运行下面命令:
istioctl uninstall --purge
为默认命名空间添加标签,以便在稍后部署应用程序时自动注入 Envoy sidecar 代理
kubectl label namespace dtb istio-injection=enabled
这样,以后所有部署在 dtb 命名空间下的应用都会自动注入 Envoy sidecar 代理。
部署应用程序
首先,确保您有一个包含适当配置的 dtb-deploy.yaml 文件。然后运行以下命令::
kubectl apply -f dtb-deploy.yaml
应用程序将启动。在每个 Pod 准备就绪后,Istio sidecar 将随之部署。您可以使用以下命令查看 Pod 的状态:
kubectl get pod -n dtb
示例输出:
NAME READY STATUS RESTARTS AGE
dtb-service-6cc7db9d94-bcs2z 2/2 Running 0 13s
等到 Pod 报告 READY2/2和 STATUS Running后再进行下一步。这可能需要几分钟,具体取决于您的平台。 READY 2/2 是因为每个 Pod 增加了一个 Istio sidecar 容器。
若要查看 Pod 的详细信息,请运行以下命令::
kubectl describe pod dtb-service-6cc7db9d94-bcs2z -n dtb
查看结果示例: