Istio简介及基于ACK安装Istio

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 了解服务网格开源产品Istio,使用阿里云ACK安装Istio过程

Istio就是Service Mesh的落地实现.

1. Istio的功能

  1. 负载均衡,服务发现
  2. 故障恢复,指标收集和监控
  3. A/B测试,灰度发布
  4. 限流,访问控制和端到端认证

2. Istio的架构


架构图:


  1. 数据平面: 数据平面由一组sidecar方式部署的智能代理(Envoy)节点组成,与每一个微服务节点共存,只负责工作
  1. 可以看到架构图上是Proxy,并不是Envoy, 其实Proxy是在Envoy的基础上包裹了一层的代理层,因为Envoy是使用C++编写的代理,但是Istio大部分都是使用Go编写的,不同语言通信上可能存在问题,所以在Envoy的基础上包裹一层.
  1. 控制平面: 相当于一个控制台的作用,单独部署于微服务集群之外,用于控制/配置数据平面
  1. Mixer:
  1. 实施控制平面的策略,并收集遥测数据;
  2. Istio独有的架构.
  1. Pilot:
  1. 提供服务发现功能
  2. 流量管理(超时/重试/熔断)
  3. 转换路由规则(将高级流控路由规则转换为Envoy可以识别的配置)
  1. Citadel:
  1. 身份和凭证管理
  2. 微服务和最终用户身份验证,认证为双向认证,不光是客户端到服务端的认证,也提供服务端到客户端的认证.
  3. 对未加密流量进行加密
  4. 基于角色的访问控制(RABC)
  1. Galley
  1. Istio的API server
  2. 验证用户编写的API配置
  3. 将接管Istio,获取配置,处理和分配组件.

3. Istio代码结构

github地址: https://github.com/istio/istio

The Istio project is divided across a few GitHub repositories:

  • istio/api. This repository defines component-level APIs and common configuration formats for the Istio platform.
  • istio/community. This repository contains information on the Istio community, including the various documents that govern the Istio open source project.
  • istio/istio. This is the main code repository. It hosts Istio's core components, install artifacts, and sample programs. It includes:
  • istioctl. This directory contains code for theistioctlcommand line utility.
  • operator. This directory contains code for theIstio Operator.
  • pilot. This directory contains platform-specific code to populate theabstract service model, dynamically reconfigure the proxies when the application topology changes, as well as translaterouting rulesinto proxy specific configuration.
  • security. This directory containssecurityrelated code, including Citadel (acting as Certificate Authority), citadel agent, etc.
  • istio/proxy. The Istio proxy contains extensions to the Envoy proxy (in the form of Envoy filters) that support authentication, authorization, and telemetry collection.

istio除了主库之外,还分散有其他库,比如架构中说到的proxy,就是最后一个库

可以看到istio的代码都是由Go编写的.

4. 基于ACK安装Istio

基于阿里云的容器服务k8s简称ACK,安装Istio,记录安装全过程

首先,需要登陆阿里云账号,找到ACK产品开通该服务,开通是免费的

4.1 创建ACK集群

其实就是创建k8s集群,阿里云提供了一键式创建K8s集群的能力

总结下来就是 买买买!!!

最低配置如上

注意: 开放公网ip

4.2 搭建bookinfo服务

Istio提供了示例程序,我们就用示例程序之一bookinfo来做应用部署

架构图:

4.2.1 下载示例程序

地址: https://github.com/zhangyao-zy/istio/tree/master/samples/bookinfo

4.2.2 安装示例程序镜像

我们要安装的配置文件有两个:

  1. bookinfo.yml 位于bookinfo/platform/kube/下
  2. bookinfo-gateway.yaml 位于 bookinfo/networking/下

4.2.2.1 配置namespace自动加注istio

kubectl label namespace default istio-injection=enabled

其实istio默认每个命名空间都会设置该参数

该参数的含义在于将会设置namespace下的所有pod都会自动注入sidecar

4.2.2.2 安装 bookinfo.yml

kube安装bookinfo.yml

kubectl apply -f bookinfo.yml

等待安装完成

# 查看pod/svc安装进度

kubectl get pod/svc -A

安装完成后可以找一个pod看下,会发现每一个pod里都多部署了一个容器,那就是网络代理

kubectl describe pod [pod名]


4.2.2.3 测试k8s内部调用

测试在pod内部调用微服务接口,看能否调用成功

kubeclt exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings --curl productpage:9080/productpage | grep -o "<title>.*</title>"

进入ratings的容器,调用api,看是否能成功获取productpage页面.

4.2.2.4 安装bookinfo-gateway.yml

kubectl apply -f bookinfo-gateway.yml

安装完成后就可以通过公网访问bookinfo服务了

gateway其实就是k8s的ingress,底层是一个nginx,提供了k8s对外访问的能力


4.2.2.5 测试公网访问

# 获取gateway的对外暴露ip和端口 -n指定命名空间

kubectl get svc istio-ingressgateway -n instio-system

拿到ip端口后就可以通过公网ip和端口访问了

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
17天前
|
Kubernetes Ubuntu jenkins
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
|
2月前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
2月前
|
Kubernetes 网络安全 API
k8s 二进制安装 详细安装步骤(二)
k8s 二进制安装 详细安装步骤(二)
|
2月前
|
Kubernetes 算法 API
k8s 二进制安装 详细安装步骤(一)
k8s 二进制安装 详细安装步骤(一)
|
2月前
|
Kubernetes 数据安全/隐私保护 Docker
kubeadm 工具实验 k8s一键安装
kubeadm 工具实验 k8s一键安装
|
2月前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
173 1
|
2月前
|
存储 Kubernetes Linux
K8S必备知识--docker的介绍以及安装
K8S必备知识--docker的介绍以及安装
|
2月前
|
存储 Kubernetes 算法
Linus上k8s安装etcd
Linus上k8s安装etcd
26 1
|
2月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
75 5
|
2月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。

推荐镜像

更多