按照官方文档配置,但是却没有成功,问题还在查询中,问题:生成的hosts文件为空,虚拟机上istio启动失败,以下是操作步骤:

大致原理:

istio通过workloadEntry和serviceEntry来关联和管理虚拟机,一个workloadEntry可以用来描述一个vm实例,serviceEntry通过workloadSelector标签来绑定workloadEntry,虚拟机启动一个实例时会自动注册,此时istio就可以访问虚拟机了。

serviceEntry的spec.host配置的主机名和virtualService和destinationRule来匹配,以进行流量管理。

虚拟机中安装istio sidecar中的DNS代理会生成k8s服务中的ip映射表,当虚拟机访问某个域名时,会先去DNS代理中查找,这样就实现了虚拟机访问集群的服务(官网配置虚拟机貌似没有使用智能代理,而是把域名文件hosts放到本地/etc/hosts文件中)

准备:一台作为k8s集群(用的阿里的容器服务,把config文件拷贝到本地操作),另一台作为需要注册的虚拟机(阿里的ECS)

集群:

1.设置环境变量

单一网格:
$ VM_APP="<将在这台虚机上运行的应用名>"
$ VM_NAMESPACE="<您的服务所在的命名空间>"
$ WORK_DIR="<证书工作目录>"
$ SERVICE_ACCOUNT="<为这台虚机提供的 Kubernetes 的服务账号名称>"
$ CLUSTER_NETWORK="" <用主集群的network>
$ VM_NETWORK=""
$ CLUSTER="Kubernetes" <用主集群的curstername>VM_APP="myvm"
VM_NAMESPACE="vmgpy"
WORK_DIR="root/myvm"
SERVICE_ACCOUNT="vm-gpy"
CLUSTER_NETWORK="8a33f7da-59e5-48ac-bb06-99b5458b168a"
VM_NETWORK=""
CLUSTER="network-8a33f7da-59e5-48ac-bb06-99b5458b168a"

2.创建工作目录

$ mkdir -p "${WORK_DIR}"

3.安装Istio

1) 配置IstioOperator

$ cat <<EOF > ./vm-cluster.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:name: istio
spec:values:global:meshID: mesh1multiCluster:clusterName: "${CLUSTER}"network: "${CLUSTER_NETWORK}"
EOF

2)执行安装

istioctl install -f vm-cluster.yaml --set values.pilot.env.PILOT_ENABLE_WORKLOAD_ENTRY_AUTOREGISTRATION=true --set values.pilot.env.PILOT_ENABLE_WORKLOAD_ENTRY_HEALTHCHECKS=true### PILOT_ENABLE_WORKLOAD_ENTRY_AUTOREGISTRATION=true:允许workloadentry自动注册
### PILOT_ENABLE_WORKLOAD_ENTRY_HEALTHCHECKS=true: 健康检查

3).安装东西向网关

samples/multicluster/gen-eastwest-gateway.sh --single-cluster | istioctl install -y -f -

4).通过东西向网关暴露istiod

kubectl apply -n istio-system -f samples/multicluster/expose-istiod.yaml

5).创建对应虚拟机的namespace和serviceaccount

kubectl create namespace "${VM_NAMESPACE}"
kubectl create serviceaccount "${SERVICE_ACCOUNT}" -n "${VM_NAMESPACE}"

6).创建WorkloadGroup资源yaml,该资源连接上虚拟机时会生成WorkloadEntry

cat <<EOF > workloadgroup.yaml
apiVersion: networking.istio.io/v1alpha3
kind: WorkloadGroup
metadata:name: "${VM_APP}"namespace: "${VM_NAMESPACE}"
spec:metadata:labels:app: "${VM_APP}"template:serviceAccount: "${SERVICE_ACCOUNT}"network: "${VM_NETWORK}"
EOF

7).创建WorkloadGroup资源,控制workloadentry自动注册

kubectl --namespace "${VM_NAMESPACE}" apply -f workloadgroup.yaml

8).使用WorkloadGroup资源生成cluster.env,hosts,istio-token,mesh.yaml,root-cert.pem

istioctl x workload entry configure -f workloadgroup.yaml -o "${WORK_DIR}" --clusterID "${CLUSTER}" --autoregister

4.把上述文件copy到虚拟机

##scp hosts root@虚拟机ip:虚拟机路径
scp hosts root@114.114.114.114:root
回车后需要输入虚拟机的连接密码
其他文件同样操作

5.虚拟机执行shell命令

#把生成的文件copy到对应目录
sudo mkdir -p /etc/certs
sudo mkdir -p /var/run/secrets/tokens
#文件拷贝到root路径下了
cd root
sudo cp root-cert.pem /etc/certs/root-cert.pem
sudo cp istio-token /var/run/secrets/tokens/istio-token
sudo cp cluster.env /var/lib/istio/envoy/cluster.env
sudo cp mesh.yaml /etc/istio/config/mesh
#在虚拟机上安装istio-sidecar
curl -LO https://storage.googleapis.com/istio-release/releases/1.11.2/rpm/istio-sidecar.rpm
sudo rpm -i istio-sidecar.rpm
#把hosts里的内容追加到本地hosts中
sudo sh -c 'cat hosts >> /etc/hosts'
#给istio-proxy配置权限
sudo mkdir -p /etc/istio/proxy
sudo chown -R istio-proxy /var/lib/istio /etc/certs /etc/istio/proxy /etc/istio/config /var/run/secrets /etc/certs/root-cert.pem
#启动istio
systemctl start istio

启动失败,错误信息

[root@iZbp1dsv500o7zmhce5ujtZ ~]# tail -f /var/log/istio/istio.log
2022-07-29T02:24:56.277986Z     warn    ca      ca request failed, starting attempt 1 in 92.310539ms
2022-07-29T02:24:56.371341Z     warn    ca      ca request failed, starting attempt 2 in 204.921376ms
2022-07-29T02:24:56.576767Z     warn    ca      ca request failed, starting attempt 3 in 416.397229ms
2022-07-29T02:24:56.993374Z     warn    ca      ca request failed, starting attempt 4 in 868.636453ms
2022-07-29T02:24:57.862217Z     warn    sds     failed to warm certificate: failed to generate workload certificate: create certificate: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup istiod.istio-system.svc on 100.100.2.136:53: no such host"
2022-07-29T02:26:15.319286Z     warn    ca      ca request failed, starting attempt 1 in 94.854681ms
2022-07-29T02:26:15.414647Z     warn    ca      ca request failed, starting attempt 2 in 197.863245ms
2022-07-29T02:26:15.613329Z     warn    ca      ca request failed, starting attempt 3 in 425.648865ms
2022-07-29T02:26:16.039990Z     warn    ca      ca request failed, starting attempt 4 in 790.225062ms
2022-07-29T02:26:16.830675Z     warn    sds     failed to warm certificate: failed to generate workload certificate: create certificate: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup istiod.istio-system.svc on 100.100.2.136:53: no such host"

Istio对接虚拟机相关推荐

  1. Istio 对虚拟机支持史话

    本文将为你介绍 Istio 历史上对虚拟机负载的支持情况,尤其是 Istio 1.8 中引入的智能 DNS 代理及 WorkloadGroup 使得虚拟机与容器在资源抽象层面可以等同视之.我将为你展现 ...

  2. Istio在虚拟机部署纳管

    Istio诞生在kubernetes中,与kubernetes完美的融合同时又是kubernetes在微服务治理方向的补充,其基于PAAS平台基于网络的无侵入的微服务解决方案来构建Service Me ...

  3. Istio Pilot源码浅析

    ] Pilot相关代码全部在pilot包下 istio/pilot包主要负责以下几个主要职责 Pilot API server:Istio将任何底层平台的微服务信息,转换成一种规范格式,并通过Pilo ...

  4. 构建基于Spring Cloud向Service Mesh框架迁移的解决方案及思路

    作为新一代微服务架构体系,Service Mesh 技术有效地解决了 Spring Cloud 微服务架构和服务治理过程中的痛点问题,一经推出便引起了很大的反响.近一年来,伴随着云原生的热火朝天,Se ...

  5. 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...

    计算机只是逻辑电路 除了电路还是电路 计算机就是一堆逻辑电路 他并不知道你到底想要干什么,他也不会理解什么是文件,什么是进程 通电的瞬间,就好像你打开开关,灯泡发光一样 所有的一切都是通过通电来启动的 ...

  6. Nacos 开源、自研、商业化三位一体战略解读

    简介: Nacos作为整个阿里云原生三位战略中的核心组成部分,我们在2018年以Configserver/VIPServer/Diamond为基础通过Nacos开源输出阿里十年沉淀的注册中心和配置中心 ...

  7. 测试Istio 1.6 Service Mesh引入虚拟机Workload (笔记与感悟)

    序: 五月底Istio官方发布了1.6的正式版, 简化了部署以及对其组件进行了整合. 引起我注意的是Istio正式增强了对非容器形态加入网格的支持, 并声明会做为重要的战略持续优化. 做为VMware ...

  8. k8s istio 虚拟机重启后出现upstream connect error or disconnect

    错误(虚拟机重启后常见问题): upstream connect error or disconnect/reset before headers. reset reason: connection ...

  9. 图解Istio原理和实践--云平台技术栈18

    " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下 ...

  10. 深度剖析Service Mesh服务网格新生代Istio

    作者简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者.曾在亚信.爱立信.唯品会和ppmoney任职, 现任数人云资深架构师,本文由数人云独家授权 ...

最新文章

  1. 区分TTL、MSL、RTT
  2. js实现HTML标题栏中新消息提示效果
  3. 如何给基于 SAP Cloud SDK 的应用增添缓存支持 Cache support
  4. 如何一键部署项目、代码自动更新
  5. 数据库部分重点内容回顾
  6. JavaScript中的匿名函数遇上!会怎么样
  7. 2020字符串的插入(C++,stringchar*)
  8. 深入浅出交换类排序算法(转)
  9. ArcGIS案例学习笔记-手动编辑擦除挖空挖除相减
  10. 传智播客java测试题_传智播客java笔试题
  11. 基于SpringBoot的社区物业管理系统(设计与实现详解)
  12. 2013 Esri全球用户大会QA之元数据支持
  13. 深度卷积神经网络(CNN)
  14. 研究生硕士论文开题报告中的进度和安排该怎么写?
  15. 不同Costa环鉴相器鉴别特性
  16. 苹果手机上网很慢_手机的信号满格,为什么上网速度却很慢?一招教你解除限制...
  17. tushare更新,get_k_data支持分时k线数据,可替代以前的get_hist_data
  18. 从华为P20开始的脑洞之旅:AI如何改变未来手机生活
  19. Java面试题 java高级
  20. 进程间通信之面包师问题

热门文章

  1. 解决IP被封的问题几种方法
  2. 公路通用复化辛普森公式匝道点位坐标计算4800源程序
  3. ajax 灯箱效果,灯箱效果插件Magnific Popup详解
  4. Unity Shader - 车漆效果(基于MatCap)
  5. 主页被锁定为 hao.360.cn
  6. java有理数类的封装_java-有理数类的设计
  7. 大学英语计算机四级考试内容,大学英语四级考试大纲
  8. 华强盛HQST推出传输速度高达10Gbit/s网络变压器
  9. OpenLayers多源数据加载一:数据组织
  10. 软件开发几个阶段的内容以及产物