一、背景

Istio 项目由 Google 和 IBM 的团队与 Lyft 的 Envoy 团队合作启动。它已经完全在 GitHub 上公开开发。目前已经是“Service Mesh服务网格”的实际领导者。Istio官方图标如下图,是希腊语中的 英文“sail”,翻译中文即“帆”。这个设计还是不错的哈,比较贴切。

二、安装

要运行istio需要搭建3步骤:

2.1 安装Docker

安装Docker Desktop,用来管理容器

前提:先安装Homebrew

brew install --cask --appdir=/Applications docker  默认安装最新版本docker到mac的Application中。

提示docker was successfully installed!表示安装成功。

安装完后,可以找到小海豚图标。

校验docker是否安装成功,打开终端输入:

docker version

2.2 安装Kubernetes

Kubernetes虚拟化环境+控制台Kubernetes Dashboard

2.2.1 安装Kubernetes

1)直接在docker Desktop上选中安装kubernetes.

Docker Desktop点开,可见Kubernetes is running,如下图:

2)验证是否安装成功

1 kubectl cluster-info     查看集群信息
2
3 kubectl get nodes 查看节点
4
5 kubectl describe node 查看节点明细

结果:

节点明细太长就不展示了。

2.2.2 安装 kubernetes dashboard

1)部署kubernetes dashboard

https://github.com/搜索kubernetes/dashboard,第一个就是:https://github.com/kubernetes/dashboard。找到安装链接,如下图:

命令行运行:

1 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

结果:

2)授权 kube-system 默认服务账号

新建一个文件夹docker-images-desktop, 作为git根目录:

1 git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
2 cd k8s-for-docker-desktop
3 kubectl apply -f kube-system-default.yaml

3)获取登陆token

新建token.sh

1 touch token.sh

打开编辑

1 vim token.sh

将以下代码放入

1 TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
2 kubectl config set-credentials docker-desktop --token="${TOKEN}"
3 echo $TOKEN

:wq!保存。

运行脚本,获取token:

4)登陆

开启代理:

1 kubectl proxy

结果:

浏览器打开:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/workloads?namespace=default  ,用第三步生成的token登录。

登录后界面如下:

2.3 安装Istio

2.3.1 安装Istio

1)命令行下载Istio

1 curl -L https://istio.io/downloadIstio | sh -

下载包目录如下:

把bin目录下的istioctl添加到PATH,方便后续使用istioctl命令操作。

export PATH="$PATH:/Users/**/soft/istio-1.16.0/bin"  替换为bin目录的全路径

安装istio:

istioctl install

结果:

2)注入代理

给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理:

kubectl label namespace default istio-injection=enabled

2.3.2 部署示例应用

1)部署bookinfo自带示例应用

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yam

结果:

2)检查服务

应用很快会启动起来。当每个 Pod 准备就绪时,Istio 边车将伴随应用一起部署。

kubectl get services

结果:

查看pod状态

kubectl get pods

多执行几次,当所有POD的READY=2代表完成了,如下图:

3)验证启动

运行下面命令,通过检查返回的页面标题来验证应用是否已在集群中运行,并已提供网页服务:

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

2.3.3 对外开放应用程序

1)应用关联网关

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yam

2)确保配置文件没有问题:

istioctl analyze

操作结果如下图:

3)确定入站IP和端口

export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')

Docker For Desktop: 注意docker环境要把host改一下。

export INGRESS_HOST=127.0.0.1

设置环境变量 GATEWAY_URL:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

确保 IP 地址和端口均成功地赋值给了环境变量:

echo "$GATEWAY_URL"

结果:127.0.0.1:80

4)验证访问“bookinfo 产品页面”

echo "http://$GATEWAY_URL/productpage"

结果:http://127.0.0.1:80/productpage,浏览器打开,如下图:

不要看这个"The Comdedy of Errors"以为是错误哈,这个是莎士比亚早期的一部喜剧...

2.4 监控

samples中内置Istio 和集成了很多常用监控。

kubectl apply -f samples/addons

结果:

2.4.1 Grafana监控

1)验证 prometheus 服务正在自身集群中运行。

kubectl -n istio-system get svc prometheus

结果:

2)验证 Grafana 服务正在自身集群中运行。

kubectl -n istio-system get svc grafana

结果:

3)通过 Grafana UI 打开 Istio Dashboard。

istioctl dashboard grafana

自动打开页面,控制面板如下图:

网格监控,如下图:

2.4.2 kiali安装和监控

1)安装kiali

kubectl rollout status deployment/kiali -n istio-system

结果:

2)访问 Kiali 仪表板

istioctl dashboard kiali

访问几次http://127.0.0.1/productpage#,再刷新kiali监控,如下图:

可见在服务监控“可视化”这一块,做的还不错。虽然目前不火。

====参考======

Mac上安装k8s

Istio官方入门文档

云原生架构(二)环境搭建(Mac上安装Docker+Kubernetes+Istio一条龙)的更多相关文章

  1. 002-docker安装-mac上安装docker,17.06在CentOS7 64位机器上安装

    一.mac上安装docker 1.下载 通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 2.安装 将 Moby 的鲸鱼图标拖拽到  ...

  2. 如何在mac上安装docker[记录自己在mac上安装docker的经历]

    0.引子 最近入手了一台mac笔记本,想在本地安装docker. 1.找安装文档. 文档地址:http://www.widuu.com/chinese_docker/installation/mac. ...

  3. 在mac上安装Docker

    1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction ...

  4. Mac上安装Docker

    安装这个东东有两种方法:在线安装和手动安装 在线安装: 打开终端,直接输入brew cask install docker之后回车,执行的过程中会要求输入password(就是你电脑的登录密码),输入 ...

  5. Mac上通过docker配置PHP开发环境

    这篇文章介绍的内容是关于Mac上通过docker配置PHP开发环境,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHP​zhuanlan.zhihu. ...

  6. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

  7. vue开发环境搭建Mac版

    一.前言 要做一个移动端app,面对webapp最流行的三个技术React,angular,vue,三选一,如何选,可参考blog移动app技术选型,react,angular, vue, 下面是对  ...

  8. 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift

    近十年来,信息技术领域在经历一场技术大变革,这场变革正将我们由传统IT架构及其所支撑的臃肿应用系统时代,迁移至云原生架构及其所支撑的敏捷应用系统时代.在这场变革中,新技术的出现.更新和淘汰之迅速,以及 ...

  9. .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记

    目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...

  10. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

随机推荐

  1. cAdvisor容器监控规则

    其他说明参考host主机监控规则:https://www.cnblogs.com/sanduzxcvbnm/p/13589848.html 在prometheus主程序目录下的rules目录下新建do ...

  2. 关于linux的一点好奇心(五):进程线程的创建

    一直以来,进程和线程的区别,这种问题一般会被面试官拿来考考面试者,可见这事就不太简单.简单说一点差异是,进程拥有独立的内存资源信息,而线程则共享父进程的资源信息.也就是说线程不拥有内存资源,所以对系统 ...

  3. VMware安装Win11+WSA子系统和使用教程

    VMware安装Win11+WSA子系统和使用教程 作者:Sna1lGo 时间:2022/9/29 下载相关文件: Win11镜像:Download Windows 11 (microsoft.com ...

  4. 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin

    原文链接 我是一名五六年经验的前端程序员,现在准备学习一下 Golang 的后端框架 gin. 以下是我的学习实战经验,记录下来,供大家参考. https://github.com/gin-gonic ...

  5. JSP实现登录删除添加星座等(带样式)

    功能要求 1.完成两个页面 2.第一个登陆页面login. jsp 3.第二个用户管理页面useManage. jsp 4.有登录功能(能进行用户名密码的校验,用户名若为自己的学号密码为班级号,允许登 ...

  6. 欢迎来到ktq_cpp的cnblog

    欢迎来到ktq_cpp的cnblog 初学html,可能排版有一些问题,望指教 我的洛谷博客 我的AtCoder账号

  7. 空 Maven项目转成 Web项目 & SpringMVC调用其他 Module中的方法可能会遇到的小问题

    SpringMVC调用其他 模块内的方法的 坑 下次别在阴沟里翻船啦.. 一共花费 4个小时,解决项目中的这个问题 OMG 1. 首先是 Maven新建工程 一般使用 Maven都是先创建 空工程 当 ...

  8. GitLab + Jenkins + Harbor 工具链快速落地指南

    目录 一.今天想干啥? 二.今天干点啥? 三.今天怎么干? 3.1.常规打法 3.2.不走寻常路 四.开干吧! 4.1.工具链部署 4.2.网络配置 4.3.验证工具链部署结果 4.3.1.GitLa ...

  9. 谣言检测(RDEA)《Rumor Detection on Social Media with Event Augmentations》

    论文信息 论文标题:Rumor Detection on Social Media with Event Augmentations论文作者:Zhenyu He, Ce Li, Fan Zhou, Y ...

  10. springboot+bootstrap实现图书商城管理(大三下学期课程设计)

    在csdn上记一次自己的课程设计过程(已经实习两个月了.感觉这个很容易做.支付可能需要多花点时间.): 在此框架基础之上权限认证管理设置成功:https://blog.csdn.net/weixin_ ...