虚拟机安装
请跟随本指南部署 Istio,并接入虚拟机。
先决条件
- 下载 Istio 发行版
- 执行必要的平台安装5
- 检查 Pod 和服务的需求6
- 虚拟机必须 IP 连通到目标网格的入口网关,如果有更高的性能需求,也可通过三层网络连通网格中的每个 Pod。
- 阅读虚拟机架构7来理解 Istio 虚拟机集成的高级架构。
准备指导环境
创建虚拟机
设置环境变量
VM_APP
、WORK_DIR
、VM_NAMESPACE
、和SERVICE_ACCOUNT
(例如:WORK_DIR="${HOME}/vmintegration"
):创建工作目录:
安装 Istio 控制平面
如果您的集群已经有一个 Istio 控制平面,您可以跳过安装步骤,但是仍然需要为虚拟机访问公开控制平面。
安装 Istio,打开控制平面的对外访问,以便您的虚拟机可以访问它。
为安装创建
IstioOperator
空间安装 Istio。
部署东西向网关:
使用东西向网关暴露集群内部服务:
暴露控制平面:
暴露控制平面:
暴露集群服务:
配置虚拟机的命名空间
创建用于托管虚拟机的名称空间:
为虚拟机创建 ServiceAccount:
创建要传输到虚拟机的文件
首先,为虚拟机创建 WorkloadGroup
模板:
首先,为虚拟机创建 WorkloadGroup
模板:
然后,将 WorkLoadGroup
应用到集群中:
使用自动创建 WorkloadEntry
的特性,还可以进行应用程序的健康检查。
与 Kubernetes Readiness Probes12 具有相同行为和 API 。
例如,在应用程序的 /ready
端点上配置探针:
通过这个配置,自动生成的 WorkloadEntry
在探针成功之前不会被标记为 “Ready”。
接下来,使用 istioctl x workload entry
命令来生成:
cluster.env
: 包含用来识别名称空间、服务帐户、网络 CIDR、和入站端口(可选)的元数据。istio-token
: 用来从 CA 获取证书的 Kubernetes 令牌。mesh.yaml
: 提供ProxyConfig
来配置discoveryAddress
, 健康检查, 以及一些认证操作。root-cert.pem
: 用于认证的根证书。hosts
:/etc/hosts
的补充,代理将使用该补充从 Istiod 获取 xDS.*。
配置虚拟机
在要添加到 Istio 网格的虚拟机上,运行以下命令:
将文件从
"${WORK_DIR}"
安全上传到虚拟机。如何安全的传输这些文件,这需要考虑到您的信息安全策略。本指南为方便起见,将所有必备文件上传到虚拟机中的"${HOME}"
目录。将根证书安装到目录
/etc/certs
:将令牌安装到目录
/var/run/secrets/tokens
:安装包含 Istio 虚拟机集成运行时(runtime)的包:
注意:目前仅支持 CentOS 8。
将
cluster.env
安装到目录/var/lib/istio/envoy/
中:将网格配置文件 Mesh Config 安装到目录
/etc/istio/config/mesh
:将 istiod 主机添加到
/etc/hosts
:把文件
/etc/certs/
和/var/lib/istio/envoy/
的所有权转移给 Istio proxy:
在虚拟机中启动 Istio
启动 Istio 代理:
验证 Istio 是否成功工作
检查
/var/log/istio/istio.log
中的日志,您应该能看到类似于以下的内容:创建命名空间,用以部署基于 Pod 的服务:
部署
HelloWorld
服务:从虚拟机向服务发送请求:
下一步
更多关于虚拟机的信息:
- Debugging Virtual Machines14 to troubleshoot issues with virtual machines.
- Bookinfo with a Virtual Machine15 to set up an example deployment of virtual machines.
卸载
在虚拟机中停止 Istio:
然后,删除 Istio-sidecar 的发行包:
要卸载 Istio,请运行以下命令:
默认情况下,控制平面的命名空间(比如:istio-system
)并不会被删除。
如果确认不再使用,使用下面命令删除: