一、背景

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. Redis从入门到高级笔记【涵盖重点面试题】

    NoSQL数据库 DBEngines网站中会统计目前数据库在全世界的排名 1.1 什么是NoSQL 最常见的解释是"non-relational",很多人说它是"Not ...

  2. C#高级特性(反射)

    今天来讲解反射的应用: 一.反射是什么? 简诉一下,反射就是.Net Framework 的一个帮助类库,可以获取并使用metadata(元数据清单):说的通俗易懂点,就是不用通过引用,仍然可以使用其 ...

  3. HTML5中新增实用的标签

    1:progress  进度条 <h3>progress</h3> <progress value="75" max="100"& ...

  4. 分布式存储系统之Ceph集群CephX认证和授权

    前文我们了解了Ceph集群存储池操作相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16743611.html:今天我们来聊一聊在ceph上认证和授权的 ...

  5. 洛谷P4630 [APIO2018] Duathlon 铁人两项 (圆方树)

    圆方树大致理解:将每个点双看做一个新建的点(方点),该点双内的所有点(圆点)都向新建的点连边,最后形成一棵树,可以给点赋予点权,用以解决相关路径问题. 在本题中,方点点权赋值为该点双的大小,因为两个点 ...

  6. HTTPS涉及的加密算法讲解

    前言 从2015年左右开始,Google.Baidu.Facebook 等互联网巨头,不谋而合地开始大力推行 HTTPS, 国内外的大型互联网公司很多也都已经启用了全站 HTTPS 为鼓励全球网站的 ...

  7. 消除两个inline-block元素之间的间隔

    发现问题 两个inline-block元素之间的间隔.如下图 期望 消除两个inline-block元素之间的间隔. 解决方法 1.父元素字体大小设置为0 间隔的形成是非元素标签形成的 /** 方案1 ...

  8. __g is not defined

    新手小白学习小程序开发遇到的问题以及解决方法 文章目录 1.出现的问题 2.解决的方法 1.出现的问题 2.解决的方法 删除app.json中的 "lazyCodeLoading" ...

  9. Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务

    本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置 ...

  10. 【pytest官方文档】解读- 开发可pip安装的第三方插件

    在上一篇的 hooks 函数分享中,开发了一个本地插件示例,其实已经算是在编写插件了.今天继续跟着官方文档学习更多知识点. 一个插件包含一个或多个钩子函数,pytest 正是通过调用各种钩子组成的插件 ...