Istio 1.15 发布,支持 arm64 架构处理器

a0acd5fb6139043a3bc00872274811f9.gif

Istio 是基于容器的云原生技术栈的三大核心技术之一,另外两个是 Kubernetes 和 Knative。其中 Kubernetes 和 Knative 早已支持了 arm64 架构,甚至连 Istio 的数据平面 Envoy 早在 1.16 版本 [1] 就已支持 arm64 架构(2020 年 10 月)。随着 Istio 1.15 的发布 [2] ,你可以开箱即用得在 arm64 架构上部署 Istio,不需要自己来编译 arm 架构的镜像。

在 Istio 1.15 之前如何在 arm 架构上安装 Istio?

Istio 默认使用 Docker Hub 作为生产镜像仓库,Google Container Registry 作为生产和测试仓库。对于 1.14 及以前的版本,Istio 官方的镜像仓库中只有 amd64 架构的镜像,如果你的 Kubernetes 集群是运行在 arm 架构下,在安装 Istio 时会出现出现如下错误:

exec user process caused: exec format error

这时你需要为 Istio 安装重新指定一个包含 arm64 架构镜像的仓库,在安装 Istio 时执行下面的命令指定该镜像仓库:

$ istioctl install --set profile=demo --set hub=docker.io/mydockerhub -y

此时要想在 arm64 架构上使用 Istio,你可以使用 Istio 社区中有人为 Istio 单独构建了 arm64 架构的镜像 [3] ,或者自己构建镜像。

Istio 为了支持 arm 做了哪些工作?

为了让 Istio 支持 arm,需要将以下二进制文件或者镜像基于 arm 架构编译:

  • • istioctl:这是最简单的部分,只需要使用 Go 语言的交叉编译即可,Istio 的早期版本就已经支持;

  • • pilot:控制平面 Istiod 中运行的镜像;

  • • proxyv2:在 Ingress Gateway、Egress Gateway 和 Sidecar 中使用的镜像,通过 Kubernetes mutating webhook[4] 自动注入;

Istio 数据平面中的 Envoy 是从 Envoy 官方仓库中 fork 出来的,但是 Envoy 早就支持了 arm64,为什么 Istio 官方还不支持呢?这是因为一方面 Istio 的官方 CI 环境 prow.istio.io[5] 运行在 GKE 上的,而 GKE 上并没有 arm64 架构的环境,所以无法执行测试。直到 2022 年 7 月 GKE 才正式提供 arm64 架构的虚拟机,那时才可以方便的编译和测试 arm64 架构的 Istio,详见 Run your Arm workloads on Google Kubernetes Engine with Tau T2A VMs[6] 。

注意

Istio 官方仅提供了 amd64 和 arm64 架构的镜像,不支持 arm32。

至于 arm 架构的镜像构建,可以使用 Docker BuildKit 来实现多平台构建,你可以使用下面的命令编译指定 arm 平台架构的镜像:

docker buildx build --platform linux/arm64

关于 docker buildx 的详细信息请参考 Docker 文档 [7] 。

你可以像往常一样来安装 Istio,Kubernetes Node 会根据节点的架构自动拉起对应平台架构的镜像。

引用链接

[1] 1.16 版本: https://www.envoyproxy.io/docs/envoy/v1.16.0/install/building#arm-binaries
[2] Istio 1.15 的发布: https://istio.io/latest/news/releases/1.15.x/announcing-1.15/
[3] 镜像: https://github.com/resf/istio
[4] mutating webhook: https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook
[5] prow.istio.io: https://prow.istio.io/
[6] Run your Arm workloads on Google Kubernetes Engine with Tau T2A VMs: https://cloud.google.com/blog/products/containers-kubernetes/gke-supports-new-arm-based-tau-t2a-vms
[7] Docker 文档: https://docs.docker.com/build/buildx/multiplatform-images/

b0254616097fb322f6ae560e86dd2047.png

服务网格峰会 Service Mesh Summit  2022 正在报名中

获取更多云原生社区资讯,加入微信群,请加入云原生社区,点击阅读原文了解更多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TP框架表单验证 【包含ajax方法】

之前的表单验证都是用js写的,这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降。  自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创…

Spring 入门学习二之IOC

今天来学习Spring ioc .一、spring jar 包导入 在 spring 官网下载开发包 spring-framework-4.2.4.RELEASE,然后导入需要的 jar 包到项目 /lib/ 目录下。  二、代码开发 新建一个 src/cn/sxt/bean/Hello.java文件 package cn.sxt.bean;/*** Created by kaiyiwang o…

java 物理内存_聊聊Java中的内存

JVM的内存先放一张JVM的内存划分图,总体上可以分为堆和非堆(粗略划分,基于java8)那么一个Java进程最大占用的物理内存为:Max Memory eden survivor old String Constant Pool Code cache compressed class space Metaspace Thread st…

.Net CoreRabbitMQ基本使用

队列模式https://www.rabbitmq.com/getstarted.html对以上几种模式进行简要分类,可以分成如下三类(RPC暂不考虑)简单队列模式,单发单收,一对一模式Worker模式,单发多收(一个消息一个接收者,多个消息多个接收者)&#x…

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux 之前看到朋友还动不动 apt-get update upgrade,就很纳闷,后来发现原来他只是知道这个更新命令却不知其意,所以每次安装个包就把所有apt-get的常用清除更新命令打…

java获取tomcat目录结构_Tomcat目录结构详解

Tomcat目录结构图如下:bin目录存放一些可执行的二进制文件,.sh结尾的为linux下执行命令,.bat结尾的为windows下执行命令。catalina.sh:真正启动tomcat文件,可以在里面设置jvm参数。startup.sh:启动tomcat(需…

智慧农业物联网云平台方案

2019独角兽企业重金招聘Python工程师标准>>> 多比智慧农业物联网云平台解决方案结合了最先进的物联网、云计算、传感器、自动控制等, 在浏览器或手机客户端实时显示大棚、大田、温室等温度、湿度、PH值、光强度、CO2,或作为自动控制的参变量参与到自动控…

使用JDBC获取Oracle连接时报错

The Network Adapter could not establish the connection 网络适配器不能创建连接 作为初学者的来说,这个问题让我找了好多次,每次重新开启电脑时就可以正常获取连接,过了一会儿,自己不知道做了什么就会又报错,…

.Net CoreRabbitMQ消息转发可靠机制(上)

前言生产者发送消息到了队列,队列推送数据给了消费者,这里存在一些问题需要思考下生产者如何确保消息一定投递到了队列中RabbitMQ 丢失了消息(下文暂不涉及这块)队列如何确保消费者收到了消息呢生产者可靠发送执行流程当生产者将消息发送出去后&#xff…

一个java文件中可包含多个main方法

java中的main方法是java应用程序的入口,java程序在运行时,首先调用执行main方法。但并不是说java中只能有一个main方法,不同类中都可以包含main方法。当JVM进行编译时,会提示选择其中一个main方法作为编译的入口。 转载于:https:/…

【SRM-05 B】无题?

Description 有一个拥有n个城市的国家。这个国家由n-1条边连接起来。有一天国家发生叛乱。叛军已占领了一些城市。如果叛军占领的城市中,存在两个城市之间有边直接相连,则称这种情况是坏的。现在并不知道叛军占领了那些城市,问有多少种情况是…

分享一些 Java 后端的个人干货

学习 Java 也有了不少时间,入 Java 后台的坑也有了一段时日。这段时间里,听过许多前辈的经验与分享,也看过许多大佬的文章和作品。找了个时间整理和总结了一下我个人到目前为止一路以来的听到看到或者自己感悟到的干货。 这篇文章可能更多的是…

.NET MAUI实战 Routing

1.详情本章继续分享.NET MAUI中的路由,这个概念依旧是在Prism里存在过的概念。如果使用过Prism框架的小伙伴使用该机制上手速度是非常快的。接下来一起来看看什么是路由。.NET 多平台应用 UI (.NET MAUI) Shell 包含基于 URI 的导航体验,该体验使用路由导…

分享Web应用运行的细节问题:预编译提高网站性能、跟踪用户习惯和解决线程同步...

在这个文章里,我将分享一下在iOpenWorks.com这个网站试运行中碰到的若干问题和解决方案,这些问题包含了:(1)如何通过ASP.NET MVC预编译提高性能;(2)如何知道网站在运行中&#xff0c…

mondrain配置mysql_mondrian 4.7 源码部署(示例代码)

mondrian是一个开源的数据分析工程, 网上有关mondrian3.X的源码部署比较多, 有关4.X的部署较少. 目前官方推荐使用的时mondrian3.7的修订版, 可以再github上下载到最近更新维护的mondrian-master, 下载下来后基本上只需要按部就班的使用maven build一下就可以正常使用了, 如有问…

腾讯云DevOps技术揭秘:新时代运维重器Tencent Hub最佳实践

随着云计算和容器技术的发展以及微服务架构的兴起,服务能够实现细粒度的部署,维护和伸缩。在使开发人员能快速开发的同时,这些技术也给系统和应用的运维带来了更大的挑战。DevOps理念也应运而生,强调研发和运维的流程及工具的自动…

.Net CoreRabbitMQ消息存储可靠机制(下)

前言上篇讨论过消息投递和消息消费过程中如何确保可靠传输,也提及到消息到达RabbitMQ中到被消费前也需要可靠的留存,可因许多的不确定因素会影响着消息的存在与否。消息中转点生产者发送消息到RabbitMQ中,如果交换机根据自身类型和RoutingKey…

nginx安装及负载均衡配置

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发…

智能停车O2O 独角兽初现:“ETCP停车”获5000万美金A轮融资

日前,国内第一智能停车平台“ETCP停车”宣布完毕A轮融资,由源代码资本、SIG、易车网、经纬中国和商企界知名人士联合投资超过5000万美金。同一时候获悉,ETCP作为中国智能停车行业龙头老大,不仅是该行业的创建者和领军品牌&#xf…

ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

阅读目录 Bootstrap 栅格(Grid)系统Bootstrap HTML元素Bootstrap 验证样式ASP.NET MVC创建包含Bootstrap样式编辑模板小结Bootstrap提供了一套丰富CSS设置、HTML元素以及高级的栅格系统来帮助开发人员快速布局网页。所有的CSS样式和HTML元素与移动设备优…