出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
在之前的两篇 Kubernetes 实战教学文章《Kubernetes 实战教学,手把手教您设置拥有5个节点的 K8S 群集》、《Kubernetes 实战教学,手把手教您运行第一个 Nginx 集群》中,我展示了如何构建5个节点的 Kubernetes 集群以及如何在这个集群环境中构建第一个 Nginx 应用程序。在本文中,我将展示如何在 Play with Kubernetes 平台上构建 Istio 应用程序。
Istio 是一个完全的开源服务网格,它可以对现有的分布式应用程序进行清晰的分层处理。近期,Istio v1.0版本已经正式上线。Istio 完全由 Go 语言编写,它是一个相当成熟的平台,可以提供 API 将其集成到任何日志记录平台策略系统中。这个项目对系统的开销非常小。您可以浏览 https://github.com/istio/ 从 GitHub 处获取 Istio。Istio的多样化功能集使您能够成功、高效地运行分布式微服务架构,并提供一种统一的方式来保护、连接和监视微服务。
Istio 由以下几个部分组成:
- Envoy —— 即每个微服务的Sidecar代理,用于处理集群中服务之间以及从一个服务到外部服务之间的入口、出口流量。这个代理形成了一个安全的微服务网格,可以提供丰富的功能,如发现、第7层路由、断路器、策略实施和遥测记录/报告功能。(注意:服务网格不是覆盖网络。它简化并增强了应用程序中的微服务,通过底层平台提供的网络相互通信。)
- Mixer —— 代理和微服务利用的中央组件,用于实施授权、速率限制、配额、身份验证、请求跟踪和遥测收集等策略。
- Pilot —— 负责在运行时配置代理的组件。
- Citadel —— 负责证书颁发和轮换的集中组件。
- Node Agent —— 负责证书颁发和轮换的每个节点组件。
- Galley —— 用于在 Istio 中验证、摄取、聚合、转换和分发配置的中心组件。
Istio 带来了哪些好处?
图示:Sidecar 接收了所有网络流量
- Istio 可以让您连接、保护、控制和观察服务;
- 它有助于降低服务部署的复杂性,并减轻开发团队的压力;
- 它为开发人员和 DevOps 提供了细粒度的可见性和对流量的控制,并且无需对应用程序代码进行任何更改;
- 它为 CIO 提供了所需的必要工具,来帮助整个企业实现安全性和合规性要求;
- 它提供了对整个服务网格的行为洞察和操作控制;
- 通过HTTP、gRPC、Web Socket 和 TCP 流量的自动负载均衡,Istio 可以轻松创建已部署服务的网络;
- 它提供了对流量行为的细粒度控制,具有丰富的路由规则、重试、故障转移和故障注入;
- 它支持可插入的策略层和配置 API、支持访问控制、速率限制和配额;
- Istio 为群集中的所有流量提供自动度量标准、日志和跟踪,包括群集的入口和出口;
- 它通过强大的基于身份的身份验证和授权在群集中提供安全的服务到服务的通信;
Istio 目前支持 Kubernetes。在这篇文章中,我将展示如何在Play with Kubernetes 平台使用Istio。
首先,打开 https://labs.play-with-k8s.com/ 访问 Kubernetes Playground。
单击“Login”后选择使用 Docker Hub 或 GitHub ID 进行身份验证。
一旦开始会话,您将拥有一个自己的实验室环境。
添加第一个 Kubernetes 节点
单击左侧的“Add New Instance” 来建您的第一个 Kubernetes 集群节点。它会自动将其命名为“node1”。每个实例都预装了Docker Community Edition(CE)和Kubeadm。该节点将被视为我们群集的主节点。
引导主节点
您可以通过使用以下脚本初始化主节点(node1)来引导 Kubernetes 集群。将此脚本内容复制到 bootstrap.sh 文件中,并使用“chmod + x bootstrap.sh”命令使其可执行。
当您执行此脚本时,作为初始化的一部分,kubeadm 将会编写所需的几个配置文件,设置 RBAC 并部署Kubernetes控制平面组件(如 kube-apiserver、kube-dns、kube-proxy 和 etcd等等)。控制平面组件以 Docker 容器的形式进行部署。
复制上面的 kubeadm 连接令牌命令,并将其保存以供下一步使用。此命令将用于将其他节点连接到集群。
添加工作节点
点击“Add New Node”来添加一个新的工作节点。
检查集群状态
验证正在运行的 Pod
我们已经完成了安装 Istio 1.0.0 版本的所有准备,在下一篇文章中,我将为大家带来 Istio 1.0.0 版本完整的安装过程,并在 Istio 1.0.0 中运行演示示例。