云原生架构(二)环境搭建(Mac上安装Docker+Kubernetes+Istio一条龙)
一、背景
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上安装Docker+Kubernetes+Istio一条龙)的更多相关文章
- 002-docker安装-mac上安装docker,17.06在CentOS7 64位机器上安装
一.mac上安装docker 1.下载 通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 2.安装 将 Moby 的鲸鱼图标拖拽到 ...
- 如何在mac上安装docker[记录自己在mac上安装docker的经历]
0.引子 最近入手了一台mac笔记本,想在本地安装docker. 1.找安装文档. 文档地址:http://www.widuu.com/chinese_docker/installation/mac. ...
- 在mac上安装Docker
1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction ...
- Mac上安装Docker
安装这个东东有两种方法:在线安装和手动安装 在线安装: 打开终端,直接输入brew cask install docker之后回车,执行的过程中会要求输入password(就是你电脑的登录密码),输入 ...
- Mac上通过docker配置PHP开发环境
这篇文章介绍的内容是关于Mac上通过docker配置PHP开发环境,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHPzhuanlan.zhihu. ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- vue开发环境搭建Mac版
一.前言 要做一个移动端app,面对webapp最流行的三个技术React,angular,vue,三选一,如何选,可参考blog移动app技术选型,react,angular, vue, 下面是对 ...
- 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift
近十年来,信息技术领域在经历一场技术大变革,这场变革正将我们由传统IT架构及其所支撑的臃肿应用系统时代,迁移至云原生架构及其所支撑的敏捷应用系统时代.在这场变革中,新技术的出现.更新和淘汰之迅速,以及 ...
- .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...
- Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解
系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...
随机推荐
- python合并多个excel
前言 1.工作中,经常需要合并多个Excel文件.如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并. 2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下, ...
- Oracle注入
Oracle 查询出所有的表 select * from all_tables 查询出当前用户的表 select * from user_tables 查询出所有的字段 select*from all ...
- 面试突击91:MD5 加密安全吗?
MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加密算法.MD5 可以将任意字符串,通过不可逆的字符串变换算法,生成一个唯 ...
- JavaScript基本语法(JavaScript代码嵌入方式与声明和使用变量)
.JavaScript代码嵌入方式 #①HTML文档内 JavaScript代码要写在script标签内 script标签可以写在文档内的任意位置 为了能够方便查询或操作HTML标签(元素)scrip ...
- Hyperf 接入阿里云ACM应用配置管理中心
参考: 阿里云文档:https://help.aliyun.com/document_detail/85466.html?spm=a2c4g.11186623.6.550.43cb42d4Af4Tu0 ...
- 后端框架的学习----mybatis框架(6、日志)
六.日志 如果一个数据库操作,出现了异常,我们需要排错,日志就是最好的帮手 setting设置 <settings> <setting name="logImpl" ...
- Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)
文章目录 1.基本列表 1.1 基本知识 1.2 代码实例 1.3 测试效果 2.key的原理 2.1基本知识 2.2 代码实例 2.3 测试效果 2.4 原理图解 3.列表过滤 3.1 代码实例 3 ...
- 在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
1.maven教程官网 https://m.runoob.com/maven/ 2.理解Maven的构建生命周期(clean.Package) 3.在项目中使用maven进行打包 4.运行打包好的ja ...
- SpringBoot内置工具类,告别瞎写工具类了
不知大家有没有注意到,接手的项目中存在多个重复的工具类,发现其中很多功能,Spring 自带的都有.于是整理了本文,希望能够帮助到大家! 一.断言 断言是一个逻辑判断,用于检查不应该发生的情况 Ass ...
- javascript编程单线程之异步模式Asynchronous
异步模式Asynchronous 不会等待这个任务结束才开始执行下一个任务,开启之后立即执行下一个任务,后续逻辑一般会通过回调函数的方式定义,异步模式对js 非常重要,没有异步任务单线程的 js 语言 ...