Kubernetes 实战教学,手把手教您在 K8s 集群上部署 Istio Mesh(一)

简介: Istio 是一个完全的开源服务网格,它可以对现有的分布式应用程序进行清晰的分层处理。近期,Istio v1.0版本已经正式上线。Istio 完全由 Go 语言编写,它是一个相当成熟的平台......

screenshot

出品丨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 带来了哪些好处?

screenshot

screenshot


图示: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。

screenshot

单击“Login”后选择使用 Docker Hub 或 GitHub ID 进行身份验证。

screenshot

一旦开始会话,您将拥有一个自己的实验室环境。


添加第一个 Kubernetes 节点

screenshot

单击左侧的“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 容器的形式进行部署。

screenshot

复制上面的 kubeadm 连接令牌命令,并将其保存以供下一步使用。此命令将用于将其他节点连接到集群。


添加工作节点

screenshot

点击“Add New Node”来添加一个新的工作节点。


检查集群状态

screenshot


验证正在运行的 Pod

screenshot


我们已经完成了安装 Istio 1.0.0 版本的所有准备,在下一篇文章中,我将为大家带来 Istio 1.0.0 版本完整的安装过程,并在 Istio 1.0.0 中运行演示示例。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
16天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
3月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
148 60
|
3月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
280 62
|
2月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
2月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
62 0
|
3月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
99 3
|
3月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
57 2
|
3月前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
366 2
|
4月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
249 8

热门文章

最新文章