从零开始,一步步构建服务网格istio

news2025/1/23 10:43:23

一、环境情况

环境:Ubuntu20.04

机器数量:单机1台

IP:10.9.2.83

二、准备知识

为什么使用 Istio?

Istio提供了一种更高级别的服务网格解决方案,它可以简化和加强 Kubernetes 集群中的服务间通信、流量管理、安全性和可观测性。使用 Istio,你可以减少依赖大量的 Ingress 资源和 Service 对象来处理网络的路由和代理。

安装istio为什么要先安装k8s?

istio是基于k8s来部署与使用的,所以安装istio前要先安装k8s环境

  • 本文只是为了入门,所以基于单机的方式搭建k8s也就是使用minikube的方式来搭建k8s
  • 🎯minikube的网络情况与kubectl搭建的有所不同,minikube本身就类似个虚拟机。所以nodeport对应的ip并不是主机ip,而是minikube虚拟的ip,这点比较重要,后续步骤里也会有提到。

安装istio前需要先安装些什么?

安装istio前要先安装docker、minikube。关联到的应用名软件有:

  • docker
  • minikube
  • hello-minikube
  • bookinfo
  • kiali
  • istio
  • kubectl
  • istioctl

三、安装步骤

3.1、Docker安装

  • 更新 Ubuntu 20.04 系统的包信息,并安装使用 HTTPS 来访问 Docker 软件的工具包。
apt update
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  • 导入 Docker 的官方 GPG 密钥,并添加 Docker APT 软件源。
curl -fsSL [4](https://download.docker.com/linux/ubuntu/gpg) | sudo apt-key add -
add-apt-repository "deb [arch=amd64] [5](https://download.docker.com/linux/ubuntu) $(lsb_release -cs) stable"
  • 安装最新版本的 docker-ce。
apt update
apt install docker-ce

验证 Docker 是否已经成功安装,您可以运行一个测试容器。

docker -v

到这里docker就安装好了,如果速度慢可以修改一下docker国内源。

3.2、k8s-minikube安装

安装minikube,并启动 minikube。

  • 下载 minikube 的二进制文件,并将其安装到 /usr/local/bin 目录下。
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
  • 下载 kubectl 的二进制文件,并将其安装到 /usr/local/bin 目录下。
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
sudo install kubectl /usr/local/bin/kubectl
  • 启动 minikube
minikube start --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=1.23.8

p.s.如果安装好了,下次机器重启使用minikube start就可以启动minikube了。

  • 启动后,查看一下安装了哪些pod
kubectl get pods -A

  • 现在我们来测试一下minikube环境,安装一个测试应用
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0 
kubectl expose deployment hello-minikube --type=NodePort --port=8080
  • 查询安装的情况(需要等待一会执行,因为此时需要pull相应的docker镜像)
kubectl get pods

kubectl get services hello-minikube

可以看到已经在minikube环境下部署好到hello-minikube应用,我们来方式试试。

一般来说k8s访问service的方式是主机ip+nodeport端口,可以发现这样是访问不了的。这里有点不一样,就是之前说的minikube本身就是个虚拟机,k8s是部署在minikube虚拟机上的。所以我们要先获取minikube虚拟机的ip再加上nodeport的端口来访问。

# minikube ip
192.168.49.2
# curl 192.168.49.2:31322

还有一种比较简单的方式获取访问地址的方式:minikube service hello-minikube --url

输入以上命令地址就会直接输入了。

  • 那么如何在主机上访问hello-minikube呢?

通过以下端口转发的方式这种就可以在主机访问它了。执行后会在前台启动,不要关闭,关闭就不效果了。当然你想在后台启动它就用nohub来启动。

kubectl port-forward service/hello-minikube 7080:8080

再开个窗口,curl localhost:7080

p.s.关于minikube网络我们也可以尝试一下在主机上执行以下命令

#结果就是主机上只有minikube这个容器
root@ubuntu:/# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED        STATUS        PORTS                                                                                                                                  NAMES
5ee755138e97   kicbase/stable:v0.0.42   "/usr/local/bin/entr…"   23 hours ago   Up 23 hours   127.0.0.1:32772->22/tcp, 127.0.0.1:32771->2376/tcp, 127.0.0.1:32770->5000/tcp, 127.0.0.1:32769->8443/tcp, 127.0.0.1:32768->32443/tcp   minikube
#进入容器,类似进入虚拟机
root@ubuntu:/# docker exec -it 5ee755138e97 bash
#发现在容器里执行curl localhost:31322就可以访问
root@minikube:/# curl localhost:31322
Request served by hello-minikube-fdf664d87-zftgp

HTTP/1.1 GET /

Host: localhost:31322
Accept: */*
User-Agent: curl/7.81.0

到这时minikube就安装与测试完成。

3.3、istio安装步骤

  • 下载 istio 的安装包
curl -L https://istio.io/downloadIstio | sh -

下载后,解压到/usr/local/istio

  • istioctl 命令添加到 PATH 中。
export PATH=/usr/local/istio/bin:$PATH

这里是临时生效,如果要永久生成就修改vi /etc/profile。

  • 查看是否安装成功
istioctl version
no running Istio pods in "istio-system"
1.12.1
  • 使用 istioctl install 命令安装 istio,并选择一个合适的配置文件,例如 demo。
    • 安装 istio,并使用 demo 配置文件,该配置文件启用了高级别的追踪和访问日志,以及额外的组件,例如 Egress gateway 和 Ingress gateway。
istioctl install --set profile=demo

istioctl version

再执行stioctl version就已经有安装好的东西了。

当然也可以通过以下命令,看看安装了些什么

kubectl -n istio-system get deploy

此至istio就搭建完成了,后面还有篇介绍istio简单使用与测试的文章,大家感兴趣也可以接着看一看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛微E9开发 限制明细表的行数,要求必须填写n行才能提交

通过设置明细表属性实现 关闭“允许新增明细”、“允许删除已有明细”功能开启“新增默认空明细”功能&#xff0c;并设置初始值为n 新增时的流程加载页面 通过代码块实现 <script>jQuery(document).ready(function(){ debugger;//新增行前执行代码WfForm.regist…

软件测试知识面试题:白盒测试、黑盒测试、测试用例

文章目录 白盒测试1、白盒测试分两类2、白盒测试的四个原则3、白盒测试常用的7类测试 黑盒测试1、黑盒测试的优缺点2、黑盒测试的方法3、黑盒测试的原则 测试用例1、测试用例包含2、设计测试用例所需的文档资料3、采用白盒测试技术设计用例的目的4、采用黑盒测试技术设计用例的…

【Java探索之旅】解密Java中的类型转换与类型提升

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java编程秘籍 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、类型转化1.1 自动类型转换&#xff08;隐式类型转换&#xff09;1.2 强制类型转换…

实体店新模式:线下正规实体门店的转型与升级策略

在当今竞争激烈的市场环境下&#xff0c;线下正规实体门店需要不断转型与升级&#xff0c;以适应消费者的需求和市场的变化。 作为一名开鲜奶吧5年的创业者&#xff0c;我见证了无数实体店的成功与失败&#xff0c;下面的文章我将通过具体案例&#xff0c;为大家分享一些实用的…

[WiFi] 802.11w/802.11k/802.11v/802.11r/802.11u/802.11ai/802.11ah简介

802.11w&#xff08;PFM&#xff09; Protected Management Frames,802.11w协议主要基于现有的对数据报文的加密形式&#xff0c;对管理帧进行类似的加密。802.11w需要加密的管理帧包括解关联帧、去认证帧及强壮Action帧。 802.11k&#xff08;RRM&#xff09; Radio Resource …

Transformer家族

在《Transformer原理》中我们介绍了&#xff0c;现在很多大模型都是基于Transformer&#xff0c;其中最出名就是GPT和BERT模型&#xff0c;在GPT和BERT模型被提出来之后&#xff0c;NLP领域也出现了基于Transformer结构的模型&#xff0c;按照模型结构基本可以分为三类&#xf…

ruoyi-vue插件集成websocket

链接&#xff1a;插件集成 | RuoYi WebSocketServer.java&#xff1a;补充代码 /*** 此为广播消息* param message 消息内容*/public void sendAllMessage(String message) {LOGGER.info("【websocket.sendAllMessage】广播消息:"message);try {for(String sessionI…

游戏免费下载平台模板源码

功能介绍 此游戏网站模板源码是专门为游戏下载站而设计的&#xff0c;旨在为网站开发者提供一个高效、易于维护和扩展的解决方案。 特点&#xff1a; 响应式设计&#xff1a;我们的模板可以自适应不同设备屏幕大小&#xff0c;从而为不同平台的用户提供最佳的浏览体验。 …

亲测有效,职场焦虑迷茫的测试人都需要的3大良方!

Hi&#xff0c;大家好&#xff0c;我是小马哥。日常大家聊天时经常提及一个关键词——大环境不好&#xff0c;这种感受像一股暗流&#xff0c;由此带来了很多变化。 有人在这股潮流中感到迷失&#xff0c;选择了躺平&#xff1b;而有的人则积极寻找应对方法&#xff0c;努力在…

Dgraph 入门教程四《开发环境的搭建》

在深入 了解Dgraph 之前&#xff0c;我们先了解下开发环境&#xff0c;毕竟让开发人员真正动起手来才是第一步。 Dgraph 支持很多种语言的开发&#xff0c;包括GO&#xff0c;Python&#xff0c;JS&#xff0c;C#和Java等等。出于项目需要&#xff0c;只了解下JS和Java。 1、…

如何用SSH连接

以gitlab的SSH来举例&#xff0c;包括配置与克隆的过程&#xff1a; Git 是一个分布式版本控制系统&#xff0c;这意味着您可以在本地工作&#xff0c; 然后将您的更改共享或推送到服务器。在这种情况下&#xff0c;您推送到的服务器是 GitLab。 GitLab 使用 SSH 协议与 Git …

DC-DC直流隔离模块电源正负双输出升压变换器HRA系列5V12V24V转±50v±80v±110v±150v±200v±250v±300v

特点 效率高达 80%以上1*1英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRA 0.2~8W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、36…

HTML视频笔记

学习arm开发板&#xff0c;涉及到网页HTML PHP什么的&#xff0c;简单看个视频学习下 HTML&#xff5c;超简单HTML入门教程 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element ​​​​​​vscode需要的libc6等需要的版本高​​​​​​ 为了安装vscode&#xff0c;将…

Github上哪些好用的工具

专注于web漏洞挖掘、内网渗透、免杀和代码审计&#xff0c;感谢各位师傅的关注&#xff01;网安之路漫长&#xff0c;与君共勉&#xff01; Qexo-爱写博客的师傅强烈推荐 漂亮的 Hexo 静态博客编辑器。该项目是基于 Django 的 Hexo 静态博客管理后台&#xff0c;支持文章管理、…

[C语言]——数组练习

目录 练习1&#xff1a;多个字符从两端移动&#xff0c;向中间汇聚 练习2&#xff1a;⼆分查找 练习1&#xff1a;多个字符从两端移动&#xff0c;向中间汇聚 编写代码&#xff0c;演⽰多个字符从两端移动&#xff0c;向中间汇聚 #include <stdio.h> int main() {char a…

基础小白十天学会linux------>linux系统的介绍,应用,以及快速上手

什么是操作系统&#xff1f; 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是管理计算机硬件与软件资源的系统软件&#xff0c;是计算机系统的核心与基石。它负责为用户和其他软件提供交互的界面&#xff0c;同时管理系统资源&#xff0c;如CPU时间、内…

Vue3实战 第十二章 表格组件里el-table-column 的 formatter属性应用

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

Unity Xlua热更新技术学习指南

热更新是商业网络游戏必不可少的一项技术&#xff0c;而基于lua的热更新技术又是Unity商业网游项目中的一个主流选择。 部分同学近期表示自己在面试中被面试官提问热更新相关知识&#xff0c;但由于对热更新能力有所缺失&#xff0c;最后遗憾的与心仪工作失之交臂。 由此可见&a…

C++第三弹---C++入门(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 C入门 1、内联函数 1.1、概念 1.2、特性 2、auto关键字(C11) 2.1、类型别名思考 2.2、auto简介 2.3、auto的使用细则 2.3、auto不能推导的场景 …

3.自定义工程目录配置CMakeLists

问题背景 熟悉stm32keil开发的都知道&#xff0c;我们在编写不同的外设时&#xff0c;通常都会单独编写一个app文件夹或者是user文件夹之类的来存放不同外设功能的源文件和头文件。 在前面一节2.构建第一个工程并烧录到ESP32开发板-CSDN博客中&#xff0c;我们是使用了一个乐鑫…