除了 WorkloadEntry 资源外,我们还需要创建一个 Kubernetes 服务 。创建一个 Kubernetes 服务给了我们一个稳定的主机名和 IP 地址,以便使用选择器字段访问虚拟机工作负载和 pod 。这也使我们能够通过 DestinationRule 和 VirtualService 资源使用 Istio 的路由功能 。
四.实战:向istio Mesh中引入虚拟机4.1 将虚拟机引入到 Istio Mesh在这个实验中,我们将学习如何将虚拟机上运行的工作负载连接到 Kubernetes 集群上运行的 Istio 服务网格 。Kubernetes 集群和虚拟机都将在谷歌云平台(GCP)上运行 。我们将使用单一网络架构 。
在我们创建了一个 Kubernetes 集群后,我们可以下载、安装和配置 Istio 。
4.2 在 Kubernetes 集群上安装 Istio让我们下载 Istio 1.10.3 。
$ curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.10.3 sh -
下载了 Istio 后,我们可以使用 IstioOperator 来安装它,它可以设置网格 ID、集群名称和网络名称 。网络名称将是空的,因为我们要用单一网络架构 。
让我们来设置几个环境变量,我们将在本实验中使用这些变量 。
export SERVICE_ACCOUNT="vm-sa" export VM_APP="hello-vm" export VM_NAMESPACE="vm-namespace" export WORK_DIR="${HOME}/vmfiles" export CLUSTER_NETWORK="" export VM_NETWORK="" export CLUSTER="Kubernetes"
我们还可以创建 $WORK_DIR
,在这里我们将存储证书和其他我们必须复制到虚拟机上的文件 。
mkdir -p $WORK_DIR
接下来,我们将初始化 Istio Operator 并安装 Istio:
【十一 Istio:向istio服务网格中引入虚拟机】 getmesh istioctl operator init
一旦 Operator 被初始化,我们就可以创建 IstioOperator 资源,指定网格 ID、集群名称和网络,并安装 Istio:
cat <<EOF | kubectl apply -f - apiVersion: install.istio.io/v1alpha1 kind: IstioOperator metadata:name: istionamespace: istio-system spec:values:global:meshID: mesh1multiCluster:clusterName: "${CLUSTER}"network: "${CLUSTER_NETWORK}" EOF
我们可以使用 kubectl get iop -n istio-system
命令来检查 Istio 安装状态何时变为健康 。
在下一步,我们将安装东西向网关 。这是控制平面用来与虚拟机工作负载对话的网关,反之亦然 。
gen-eastwest-gateway.sh
脚本是我们之前下载的 Istio 包的一部分 。将文件夹改为 istio-1.10.3
(或你解压 Istio 的文件夹)并运行以下命令:
samples/multicluster/gen-eastwest-gateway.sh --single-cluster | istioctl install -y -f -
gen-eastwest-gateway.sh
脚本使用一个 IstioOperator 来部署一个额外的网关,名为 istio-eastwestgateway
,并配置了服务端口 。
我们可以通过查看 istio-system
命名空间中的 Kubernetes 服务来检查新网关 。
最后,我们还需要配置网关,通过它来暴露控制平面(istiod) 。我们可以通过部署 expose-istiod.yaml
文件来做到这一点:
$ kubectl apply -n istio-system -f samples/multicluster/expose-istiod.yaml gateway.networking.istio.io/istiod-gateway created virtualservice.networking.istio.io/istiod-vs created
4.3 准备虚拟机命名空间和文件对于虚拟机工作负载,我们必须创建一个单独的命名空间来存储 WorkloadEntry 资源和任何其他虚拟机工作负载相关的资源 。此外,我们还必须导出集群环境文件、令牌、证书和其他我们必须转移到虚拟机上的文件 。
我们将把所有文件存放在我们在实验开始时创建的 $WORK_DIR
中 。
让我们在同一命名空间中创建虚拟机命名空间和我们将用于虚拟机工作负载的服务账户:
$ kubectl create ns "${VM_NAMESPACE}" namespace/vm-namespace created $ kubectl create serviceaccount "${SERVICE_ACCOUNT}" -n "${VM_NAMESPACE}" serviceaccount/vm-sa created
经验总结扩展阅读
- 2023年农历七月十一结婚怎么样 是不是吉祥的日子
- 2023年农历七月二十一是不是结婚吉日 今天可以迎亲吗
- 2023年农历八月十一结婚会幸福吗
- 2023年农历十一月搬家吉日查询 哪几天搬迁最顺利
- 九 Istio:istio安全之授权
- 哪些星座组合在婚姻中容易滑向疲软的漩涡
- Python数据分析:实用向
- 五 Istio:使用服务网格Istio进行流量路由
- 眼膜小的一头面向哪边?
- 2023年七月十一出生苏姓男孩名字叫什么生辰八字五行查询