非容器应用与K8s工作负载的服务网格化实践-1 ASM-VM-PROXY的安装

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ASM-VM-PROXY是连接ASM和VM的工具,运行在VM节点中,负责与ASM通信获取xDS信息、劫持非容器应用流量并执行网格化操作(比如上报链路追踪数据、请求安全认证等)。为了支持跨操作系统,以docker image的方式分发。为了演示跨操作系统的能力,本文使用三种最常见的Linux分发版本创建ECS实例。

ASM-VM-PROXY是连接ASM和VM的工具,运行在VM节点中,负责与ASM通信获取xDS信息、劫持非容器应用流量并执行网格化操作(比如上报链路追踪数据、请求安全认证等)。为了支持跨操作系统,以Docker Image的方式分发。

1-1-asm-vm-proxy.png

1 示例环境

为了演示跨操作系统的能力,本文使用三种最常见的Linux分发版本创建ECS实例。详情见下表。

实验名称 VM名称 公网IP 内网IP OS-release版本 内核版本
VM1 asm-vm-proxy-alios 59.110.66.99 192.168.0.250 alinux 2.1903 4.19.91-21.al7.x86_64
VM2 asm-vm-proxy-centos 39.106.112.48 192.168.0.251 centos 8 4.18.0-193.14.2.el8_2.x86_64
VM3 asm-vm-proxy-ubuntu 47.94.151.60 192.168.0.252 ubuntu 20.04 5.4.0-31-generic

2 安装Docker

为了启动ASM-VM-PROXY,以及本系列的非容器应用示例,我们需要安装docker。安装脚本示意如下。

alios (19.03.12)

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum update && yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version

centos (19.03.12)

yum install -y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum update && yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version

ubuntu(19.03.8)

apt-get update && apt-get install -y docker.io
docker version

3 启动参数

填写如下变量,将文件保存到3个VM节点,路径为/opt/asm_vm_proxy/asm_vm_proxy.env

ACCESS_KEY_ID=
ACCESS_KEY_SECRET=
REGION=
MESH_ID=
NS=
SA=
POD_NAME=

参数说明

  • ACCESS_KEY_ID 阿里云账号ID
  • ACCESS_KEY_SECRET 阿里云账号密码
  • REGION 地域标识 请参考https://api.aliyun.com/?#/region
  • MESH_ID ServiceMesh实例ID
  • NS 虚机要加入的命名空间(Namespace)
  • SA 虚机要使用的服务账号(ServiceAccount)
  • POD_NAME 虚机要使用的POD级别的名称

用途声明

  1. 获取用户的Kubernetes实例的Service CIDR,用于启动用于启动asm_vm_proxy
  2. 获取用户的ServiceMesh实例istioD地址,用于启动asm_vm_proxy
  3. 获取用户的ServiceMesh实例中间证书,并生成支持SPIFFE的VM侧证书,用于启动asm_vm_proxy和数据平面通信

4 镜像

ASM-VM-PROXY镜像的路径格式如下:

registry.{地域标识}.aliyuncs.com/acs/asm-vm-proxy:{版本标识}-aliyun

举例说明,地域名称为杭州、版本为v1.6.9的镜像路径为:registry.cn-hangzhou.aliyuncs.com/acs/asm-vm-proxy:v1.6.9-aliyun

开放地域

ASM-VM-PROXY镜像开放了如下地域,请根据就近原则拉取镜像。

序号 地域标识 地域名称
1 cn-hangzhou 华东1(杭州)
2 cn-shanghai 华东2(上海)
3 cn-qingdao 华北1(青岛)
4 cn-beijing 华北2(北京)
5 cn-zhangjiakou 华北3(张家口)
6 cn-huhehaote 华北5(呼和浩特)
7 cn-shenzhen 华南1(深圳)
8 cn-chengdu 西南1(成都)
9 cn-hongkong 中国(香港)
10 ap-southeast-1 新加坡
11 ap-southeast-2 澳大利亚(悉尼)
12 ap-southeast-3 马来西亚(吉隆坡)
13 ap-southeast-5 印度尼西亚(雅加达)
14 ap-northeast-1 日本(东京)
15 eu-central-1 德国(法兰克福)
16 eu-west-1 英国(伦敦)
17 us-west-1 美国(硅谷)
18 us-east-1 美国(弗吉尼亚)
19 ap-south-1 印度(孟买)
20 me-east-1 阿联酋(迪拜)

版本信息

ASM-VM-PROXY后续的版本升级将会与ASM管控面一致。如下图所示,请进入ASM实例页面,在基本信息中查看相关版本信息。

1-4-version-info.png

5 启动

启动脚本

docker run -d \
  --name=asm_vm_proxy \
  --network=host \
  --restart=always \
  --env-file /opt/asm_vm_proxy/asm_vm_proxy.env \
  --cap-add=NET_ADMIN \
  registry.cn-beijing.aliyuncs.com/asm_repo/asm_vm_proxy

检测

容器启动后,可以执行如下命令进行检测。

iptables -t nat -L -v |grep -A5 "Chain ISTIO_INBOUND"
Chain ISTIO_INBOUND (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   28  1428 RETURN     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh
    0     0 RETURN     tcp  --  any    any     anywhere             anywhere             tcp dpt:15020
    5   300 ISTIO_IN_REDIRECT  tcp  --  any    any     anywhere             anywhere        
iptables -t nat -L -v |grep -A3 "Chain ISTIO_IN_REDIRECT"
Chain ISTIO_IN_REDIRECT (3 references)
 pkts bytes target     prot opt in     out     source               destination         
    6   360 REDIRECT   tcp  --  any    any     anywhere             anywhere             redir ports 15006
iptables -t nat -L -v |grep -A10 "Chain ISTIO_OUTPUT"
Chain ISTIO_OUTPUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  any    lo      127.0.0.6            anywhere            
    0     0 ISTIO_IN_REDIRECT  all  --  any    lo      anywhere            !localhost            owner UID match 1337
    7   420 RETURN     all  --  any    lo      anywhere             anywhere             ! owner UID match 1337
    0     0 RETURN     all  --  any    any     anywhere             anywhere             owner UID match 1337
    0     0 ISTIO_IN_REDIRECT  all  --  any    lo      anywhere            !localhost            owner GID match 1337
    0     0 RETURN     all  --  any    lo      anywhere             anywhere             ! owner GID match 1337
    0     0 RETURN     all  --  any    any     anywhere             anywhere             owner GID match 1337
    0     0 RETURN     all  --  any    any     anywhere             localhost           
    6   360 ISTIO_REDIRECT  all  --  any    any     anywhere             172.19.0.0/20     

这里的172.19.0.0/20是ASM-VM-PROXY中获取的用户Kubernetes实例的Service CIDR

诊断

如果启动出现问题,请使用如下命令查看容器启动和proxy运行的日志。

查看容器启动日志
docker logs asm_vm_proxy
查看proxy日志
docker exec -it asm_vm_proxy tail -n 100 /var/log/istio/istio.log

验证

ASM监控

ASM-VM-PROXY启动成功后,会与ASM通信,在ASM的管控台大盘页面可以看到我们示例的3个ECS节点。

1-2-asm-dashboard.png

6 链路追踪

如果我们希望采集ECS各节点的链路追踪数据,请配置zipkin的SLB域名到/etc/hosts示意脚本如下。关于链路追踪的详情,请见本系列的最后一篇文章。

zipkin_clusterIp=$(k get svc zipkin-slb -n istio-system | grep zipkin | awk -F ' ' '{print $4}')
echo "$zipkin_clusterIp zipkin.istio-system" >dns_record

for vm in "${VMS[@]}"; do
  ssh root@"$vm" "sed -i '/zipkin.istio-system/d' /etc/hosts"
  ssh root@"$vm" "cat >> /etc/hosts" <dns_record
done
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
271 146
|
4月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
167 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
7月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
8月前
|
Ubuntu 关系型数据库 MySQL
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
364 16
|
8月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
8月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
8月前
|
Kubernetes 安全 数据安全/隐私保护
容器云服务是什么?
容器云基于容器技术,实现应用及其依赖的标准化封装,支持跨平台快速部署和高效管理。与传统虚拟机相比,容器共享宿主机操作系统内核,资源占用少、启动快,但隔离性稍弱。Docker Engine通过Dockerfile定义应用环境并生成容器镜像,适合单机场景;Kubernetes作为行业标准编排工具,支持自动扩缩容和服务发现,适用于大规模集群管理;OpenShift提供企业级全流程平台,满足合规要求;Rancher简化多云环境下的Kubernetes管理;CoreOS Tectonic专注于安全性,适用于高安全需求领域。容器云正朝着无服务器化、智能运维和边缘协同等方向发展。
630 2
|
9月前
|
人工智能 监控 安全
容器化AI模型的安全防护:构建可信的AI服务
在AI模型广泛应用的背景下,容器化AI模型的安全防护至关重要。主要安全威胁包括数据窃取、模型窃取、对抗样本攻击和模型后门攻击等。为应对这些威胁,需采取多层次防护措施:容器安全(如使用可信镜像、限制权限)、模型安全(如加密、水印)、数据安全(如加密、脱敏)和推理安全(如输入验证、异常检测)。此外,利用开源工具如Anchore Engine、Falco和ART等,可进一步加强防护。遵循安全开发生命周期、最小权限原则和深度防御等最佳实践,确保AI服务的安全性和可信度。
|
9月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
9月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
354 2

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多
    下一篇
    oss云网关配置