首先需要搭建docker+k8s环境,如何搭建这里就不再赘述,可以自行搜索。

打开命令行,运行命令:

curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.1.3 sh -

获取最新版本istio并解压,

接着进入istio目录:

cd istio-1.1.

该目录下包含:

  • 在 install/ 目录中包含了 Kubernetes 安装所需的 .yaml 文件
  • samples/ 目录中是示例应用
  • istioctl 客户端文件保存在 bin/ 目录之中。istioctl 的功能是手工进行 Envoy Sidecar 的注入。
  • istio.VERSION 配置文件

将istioctl加入PATH环境变量,这样就可以在任何地方运行该命令:

export PATH=$PWD/bin:$PATH

此时需要安装helm,来安装istio到kubernetes集群:

brew install kubernetes-helm

安装完成之后,进一步安装tiller:

先给tiller新建一个serviceaccount:

kubectl apply -f install/kubernetes/helm/helm-service-account.yaml

然后使用helm安装tiller:

helm init --service-account tiller

tiller安装完成之后,安装istio-init来对istio进行初始化,主要是一些CRD的创建:

helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system

等一段时间之后,使用如下命令查看,是否有53个CRD被创建:

kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l
53

接着创建istio相关组件,由于istio的ingressgateway的Service默认配置为LoadBalancer,集群环境没有在云提供商的平台上,所以需要改成NodePort对外提供访问。所以要用以下命令进行安装:

helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set gateways.istio-ingressgateway.type=NodePort

如果你的机器内存不足,可以将pilot的内存降低,在上面命令再加一个参数:

--set pilot.resources.requests.memory="512Mi"

当上面命令成功运行之后,可以通过kubectl命令查看pod和svc的状态:

kubectl get svc -n istio-system

结果如下:

kubectl get pods -n istio-system

结果如下:

此时,istio已经成功安装到集群。

如果想要使用istio的sidecar自动注入功能,我们还需要以下配置:

首先,查看kubernetes的apiserver启动参数:--admission-control是否包含MutatingAdmissionWebhook和ValidatingAdmissionWebhook两项,如果没有需要添加。

然后,要给需要使用自动注入功能的namespace加label

kubectl label namespace default istio-injection=enabled

这时,部署到default中的pod都会自动加上sidecar。

这时,istio的环境就已经搭建完成。

官方针对使用istio的Kubernetes环境还有几项要求:

1、针对创建的Service,启动的ports下得所有name都要遵循命名规则:<协议>[-<后缀>-],其中<协议>部分可选择范围包括 grpchttphttp2httpsmongoredistcptls 以及 udp,Istio 可以通过对这些协议的支持来提供路由能力。例如 name: http2-foo 和 name: http 都是有效的端口名,但 name: http2foo 就是无效的。如果没有给端口进行命名,或者命名没有使用指定前缀,那么这一端口的流量就会被视为普通 TCP 流量(除非显式的用 Protocol: UDP 声明该端口是 UDP 端口)

2、所有部署相关的Pod必须在containers.ports中使用containerPort明确指定监听的端口列表,未列出的端口将不会经过istio的Proxy。如果是Deployment、StatefulSet、ReplicationController、DaemonSet等也一样。

3、所有的Pod不论是否公开端口,都必须关联到至少一个Service上,如果一个 Pod 绑定多个Service,这些服务不能在同一端口上使用不同协议,例如 HTTP 和 TCP。

4、Deployment 、StatefulSet、ReplicationController、DaemonSet等应带有 app 以及 version 标签:在使用其进行 Pod 部署的时候,建议显式的为其加上 app 以及 version 标签。每个部署都应该有一个有意义的 app 标签和一个用于标识其版本的 version 标签。app 标签在分布式追踪的过程中会被用来加入上下文信息。Istio 还会用 app 和 version 标签来给遥测指标数据加入上下文信息。

5、Application UID:不能使用RunAsUser: 用户运行Pod

6、NET_ADMIN 功能: 如果集群中实施了 Pod 安全策略,除非使用 Istio CNI 插件,否则 Pod 必须具有NET_ADMIN功能。请参阅必需的 Pod 功能

istio环境搭建for macbook的更多相关文章

  1. PHP开发环境搭建

    链接: Q&A1.Mac下的PHP环境搭建 Mac 下如何搭建 PHP 开发环境? [PHP] Mac下homebrew安装及php.mysql.nginx环境安装及配置个人PHP开发环境的选 ...

  2. mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装

    一.mac OS X下Java项目环境搭建 因为某些原因新入手了台最新版的MacBook Pro,意味着今天要花一天时间安装各种软件以及项目环境搭建╮(╯▽╰)╭ 项目环境搭建步骤: 1.安装jdk ...

  3. appium ios 真机自动化环境搭建

    近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...

  4. 渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/25/es-code01/ 软件环境 1.Intellij Idea:2018.2版本 2. ...

  5. cozmo 入坑日记及开发环境搭建

    前几日,朋友在群里发了一个机器人的小视频,视频里机器人可以对话,可以推箱子,开心以后会哈哈大笑,非常有趣. 详细了解里一下,这是个叫 cozmo 的智能机器人,可以配合 SDK 用 python 编程 ...

  6. Appium之环境搭建

    Appium:是开源.跨平台.多语言支持的移动应用自动化工具 测试对象主要有:① 原生app ② 混合app(h5 + web前端基础) ③ 移动web app 测试对象APPy运行平台:  ① io ...

  7. 【CUDA 基础】0.0 腾讯云CUDA环境搭建

    title: [CUDA 基础]0.0 腾讯云CUDA环境搭建 categories: CUDA Freshman tags: CUDA 环境搭建 toc: true date: 2018-02-13 ...

  8. openshift 4.3 Istio的搭建(istio 系列一)

    openshift 4.3 Istio的搭建 本文档覆盖了官方文档的Setup的所有章节 目录 openshift 4.3 Istio的搭建 安装Istio openshift安装Istio 更新is ...

  9. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

随机推荐

  1. java的环境变量配置失败(java.exe、javaw.exe、javaws.exe优先级问题冲突)

    前言:首先安装了intelliJ Idea 其次安装了JDK 1.8 配置完三个系统变量后,java和javac执行不通过 配置过程 1.我的电脑(右键)--->属性---->高级---& ...

  2. 2019十二省联考 Round 1 && 济南市市中心游记

    在这样一场毒瘤的省选中 这道题目无疑是命题人无私的馈赠 大量精心构造的部分分,涵盖了题目中所有涉及的算法 你可以利用这道题目,对你是否能够进入省队进行初步检查 经典的模型.较低的难度和不大的代码量,能 ...

  3. Pyinstaller 打包exe

    安装 ​ pip insatll Pyinstaller 参数 pyinstaller -Fw main.py 参数 概述 -F,-onefile 打包一个单个文件,如果你的代码都写在一个.py文件的 ...

  4. Apache Jakarta Commons 工具集简介

    Apache Jakarta Commons 工具集简介[转] Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.我选了一些比较常用的项目做简单介绍.文 ...

  5. FineUIPro/Mvc/Core v5.4.0即将发布(Core基础版,新功能列表)!

    FineUIPro/Mvc/Core v5.4.0 即将于 2019-03-04 发布,目前官网示例已更新,先睹为快:http://pro.fineui.com/http://mvc.fineui.c ...

  6. UML在代码中的展现

    依赖:一个类使用了另外一个类,这种关系是临时的.脆弱的. 如人需要过河,需要船,这时人.过河(船)  中船被当做参数传入,船的实现变化会影响过河方法.     聚合:体现是整体与部分.has-a的关系 ...

  7. 随心测试_软测基础_007<软测学习路线建议>

    如果你对软测感兴趣,那么如何学习软件测试呢? 贴心小提示:以下内容,仅供参考,不挖坑 1:学习方式_职业教育选择观 ————SX的观点:成本 | 收益说,理性接受 软测产业服务链中,测试工程师重在于& ...

  8. 浅谈 C# SQL防注入

    1#region 防止sql注入式攻击(可用于UI层控制)  2  3///   4/// 判断字符串中是否有SQL攻击代码  5///   6/// 传入用户提交数据  7/// true-安全:f ...

  9. Bootstrap起步

    Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. Bootstrap 插件全部依赖 jQuery 请注意,Bootstrap 的所 ...

  10. 软工+C(11): 从命令行开始逐步培养编程能力(Java)

    上一篇:助教指南,持续更新... // Version: 0.0.4 许多人,所不知道的是,每一种编程语言都有其对应的单元测试框架,对程序在不同阶段的测试环节也概念模糊.在实际动手编写程序许久之后才听 ...