自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 9 Service

目录1 为什么要有Service2 Service和Pod的关系3 创建Service4 Service常用类型4.1 Cluster-IP4.2 NodePort4.3LoadBalancer5 Service 实现负载均衡的方式5.1 iptables 实现 service 的负载均衡5.2 ipvs实现 service 的负载均衡6 Service 的 DNS 解析7 Service 代理模式中 iptables 和 ipvs 的对比1 为什么...

2021-08-09 19:15:54 215

原创 8 工作负载控制器

在6、7文章中,介绍了Pod的基本概念、常用命令、健康检查、变量、资源限制、调度等概念与实践,尤其是实践环节,基本都是通过修改yaml文件然后创建Pod来操作的。然而在实际工作中,我们直接去创建Pod的情况很少,更多的是通过工作负载控制器来完成。之所以前面介绍Pod的操作,是因为在介绍工作负载控制器前之前,有必要单独介绍Pod的相关配置(健康检查、调度等等)从而熟悉yaml文件中对应字段的写法并验证对应的效果,而这些配置完全可以放到工作负载控制器的yaml文件中完成。1工作负载控制器的概念工作.

2021-08-09 11:08:25 297

原创 7 Pod 调度

目录1 创建Pod的工作流程2 Pod中影响调度的主要属性3 资源限制对Pod调度的影响4 将Pod调度到指定节点4.1nodeSelector(强硬)4.2nodeAffinity(亲和)5 污点及污点容忍6 绕过调度器nodeName1 创建Pod的工作流程用户发出创建pod的指令 APIServer接收到创建pod命令,生成包含Pod创建信息的yaml文件,将yaml文件写入ETCD Scheduler被APIServer通知到有新的待创建Pod的请求,..

2021-08-05 19:31:59 316

原创 6 Pod 基本管理

1 概述1.1 为什么要有Pod对于一个简单的微服务部署架构而言,至少要包含:web、app、数据库等等这些微服务。微服务之间存在调用关系,而服务本身也有多节点部署、生命周期管理的需求。基于上述需求,需要让这些服务共享同一个网络栈以及数据卷,还需要管理好这些容器的生命周期。 其实,传统“单容器部署”的方式其实可以满足上述的需求,只不过自动化程度太低了,工程师不但要做一些重复性的操作,还要面对容器生命周期管理、调度的棘手问题。基于上述的问题,Kubernetes-Pod出现了。 Pod是Kuber

2021-08-05 09:22:22 185

原创 5 YAML 资源编排

1 K8S中的基本资源概念1.1 K8S基本资源概述上面的案例中涉及到了一些基本的K8S资源,这里对它们进行简要的介绍,,本节的目的就是让我们对K8S中的资源有一个初步的认识,循序渐进。后续再分别进行详细介绍,比如:Deployment如何管理Pod?Service如何找到要代理的Pod?Label 标签的作用还有什么?等等内容。Pod:K8s最小部署单元,一组容器的集合 Deployment:最常见的工作负载控制器,用于更高级别部署和管理Pod Service:为一组Pod提供负载均衡,对

2021-08-03 11:50:13 266

原创 4 Kubctl 命令行管理工具

1 查看集群状态1.1 查看K8S集群中的节点状态只要机器上部署了kubelet,本指令就能查到该机器,Master机器也能被查到。kubectl get node1.2列出K8S中所涉及到的所有资源字段:资源名、缩写、组、是否支持命名空间、资源名称kubectl api-resources1.3查看Master组件状态kubectl get cs然而,输入完上述指令后,默认情况下Matser组件中的scheduler和controller-manager没有被..

2021-08-02 19:13:19 333 1

原创 3 Kubeadm快速部署K8S集群

在上一篇文章中,是通过二进制包的方式部署K8S集群,灵活性较强,但是操作繁琐,接下来介绍通过Kubeamd部署K8S集群的方法,该方法操作简单,也是官方推荐的K8S集群部署方式。1 环境要求及初始化1.1 环境要求3台虚拟机(1个Master,2个Node),操作系统 CentOS7.x_x64 硬件配置:2个CPU、2G内存、20G硬盘 集群中所有机器之间网络互通 可以访问外网,需要拉取镜像(如果不能访问,找一台能访问外网的机器拉取镜像,再通过docker save/load 把镜像转移

2021-07-29 17:21:13 250

原创 2 二进制方式搭建K8S集群

本文介绍单Master的K8S集群搭建全过程。1 环境要求、节点规划、配置1.1 环境要求操作系统:CentOS7.8_x64 (mini) 系统配置(每台虚拟机):2G内存、2个CPU、每个CPU上1个核心、20G硬盘 网络要求:每台虚拟机可访问外网,机器之间可相互访问 Docker 版本:19-ce Kubernetes 版本:1.181.2 节点规划由于我只有一台笔记本电脑(WIN10,16G内存),为了在VMWare中少开启几台虚拟机,就把ETCD集群分别放到仅有的3个节点

2021-07-27 18:54:19 1952 2

原创 1 K8S介绍

目录1 K8S相较于Docker的优势2K8S集群架构与组件介绍2.1 Master节点2.2Node节点3生产环境部署K8S的2种方式1 K8S相较于Docker的优势为提高业务并发和高可用,会使用多台Docker服务器部署应用,因此会面向这些问题:多容器跨主机提供服务 多容器分布节点部署 多容器升级 多容器管理K8S帮助解决容器集群的编排、管理问题。2K8S集群架构与组件介绍2.1 Master节点kube-apiserverKu...

2021-07-15 16:34:08 83

原创 CentOS7 安装vsftpd 部署 FTP 服务器

目录1 模式介绍2 安装环境3 步骤3.1基本安装,查看服务状态3.2更改防火墙配置,开放端口3.3修改vsftpd配置文件,让服务器不支持匿名访问3.4创建登录vsftpd用的账户3.5 需要修改selinux配置,实现文件上传3.6 开启被动模式3.7设置vsftpd开机自启动3. 8 测试1 模式介绍FTP的运行模式有主动模式和被动模式两种,ftp在主动模式下是通过21端口进行登陆的,但是后续是通过20端口与客户端进行数据交换,因此需要...

2021-07-13 19:52:18 169 1

原创 6 实现多主机间 Docker 容器通信

目录1 iptables简介1.1 基本操作指令1.2 iptables 工作流程2 实现多主机间Docker容器通信1 目标2操作步骤总结3 具体操作步骤1 iptables简介iptables很重要,但是我还没未进行详细学习,这里这是介绍个大概,后续进行补充完善。iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫n.

2021-07-08 17:59:22 632

原创 5 Docker 容器网络4种模式

1 桥接模式1.1 概述当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上 虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 我的理解是:bridge类型的网络=网桥。1.2 网络模式指令查看docker网络模式指令:docker network ls 查看某个网络模式的具体信息:docker inspect 网络模式id1.3 网桥相关指令安装网桥管理.

2021-07-02 20:09:09 218 1

原创 4 Docker 数据卷

1 数据卷概述数据卷就是宿主机中的一个目录或一个文件,数据卷的作用如下:容器数据持久化,即使容器被删除了,数据卷还在 客户端和容器进行数据交换 容器之间进行数据交换2 容器挂载宿主机中的任意文件(bind mounts方式)容器挂载数据卷,实际上就是确定宿主机中文件夹和容器中文件夹中的对应关系,这种关系可以是一对一,也可以是一对多,也可以是多对一。情况1:一个容器挂载一个数据卷(重要)以“创建完不进入容器命令行”的方式创建容器c1(centos:7),宿主机的文件夹路径为“/ro

2021-07-01 00:54:07 57 2

原创 3 Docker 容器管理

1 容器常用指令1.1 查看容器查看正在运行的容器:docker ps 查看所有容器(无论是否启动):docker ps -a 查看目标容器信息:docker inspect 容器名称(容器ID) 容器的启动,可理解为虚拟机的开机1.2 创建容器在后台创建名为centos1的容器 ,不启动容器:docker run -d --name=centos1 centos:7 在后台创建名为centos2的容器 ,启动容器: docker run -id --name=centos2 ce.

2021-06-30 23:05:12 192 4

原创 2 Dcoker 镜像管理

1 什么是镜像一个分层存储的文件 一个软件环境 一个镜像可创建多个容器 一种标准化的交付 一个不包含Linux内核而又精简的Linux操作系统 镜像与容器的关系可理解为类与实例的关系2镜像来自于哪里Docker Hub 是由Docker公司负责维护的公共镜像仓库,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。 Docker Hub 地址:https://hub.docker.com 企业私有镜像仓库也提供镜像3 常用镜像指令docker images:查看.

2021-06-27 00:24:03 86 1

原创 1 Docker 介绍与安装

1 Docker介绍宿主机:安装Docker守护进程的Linux服务器 镜像(Image):Docker 镜像,相当于一个 root 文件系统 容器(Container):镜像运行之后的实体,镜像和容器的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 仓库(Repository):保存镜像。2 Docker安装启动2.1 Docker安装可以直接使用现成的已经安装好Docker的Linux系统镜像,也

2021-06-25 15:10:20 76 1

原创 8 消息总线 Spring Cloud Bus

目录1 简介2 实践2.1 Docker安装RabbitMQ2.2 改造配置中心2.3 改造微服务3 强烈注意1 简介Bus用轻量的消息代理将分布式的节点连接起来,可以用于“广播配置文件的更改”、“服务的监控管理” Bus可以为微服务做监控,也可以实现应用程序之间的互相通信 Bus可选的消息代理(消息队列):RabbitMQ、Kafka2 实践目标:安装RabbitMQ,将消息总线整合到微服务系统中,实现更新配置后不需要重启微服务的功能。为了实现这个目的需要..

2021-06-23 02:47:31 90 1

原创 7 配置中心 Spring Cloud Config

目录1 简介2 配置文件放到码云3 创建配置中心微服务并连接码云4 服务从配置中心获取配置文件5 配置中心存在的问题1 简介配置中心:统一管理所有微服务配置文件的微服务 。配置中心使用总体步骤:把配置文件放到码云(或者其他代码托管平台) 创建配置中心微服务并连接码云 服务从配置中心获取配置文件2 配置文件放到码云gitee上创建一个远程仓库 在仓库下创建配置文件配置文件的命名方式:{application}-{profile}.ymlappl.

2021-06-22 22:22:30 148 3

原创 6 网关 Spring Cloud Gateway

1 简介

2021-06-22 15:57:25 121

原创 5 远程调用 Spring Cloud Feign

1 简介前面学习中,使用RestTemplate进行远程调用的方式如下:String baseUrl = "http://user-service/user/findById?id=1"+ id;User user = restTemplate.getForObject(baseUrl, User.class)

2021-06-21 00:18:20 255 6

原创 4 熔断器 Spring Cloud Hystrix

1 简介1.1 为什么要有熔断器在微服务中,一个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。 如果某服务出现异常,请求阻塞,用户得不到响应,容器中线程不会释放,于是越来越多用户请求堆积,越来越多线程阻塞。 单服务器支持线程和并发数有限,请求如果一直阻塞,会导致服务器资源耗尽,从而导致所有其他服务都不可用,从而形成雪崩效应 而Hystrix解决雪崩问题的手段,主要是服务降级(兜底)、线程隔离,下面的内容只讲服务降级。...

2021-06-19 19:56:53 158

原创 3 负载均衡 Spring Cloud Ribbon

1 Ribbon 简介Ribbon 是实现了HTTP和TCP的客户端负载均衡的工具Ribbon 不是一个微服务,不需要独立部署但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的Feign也是基于Ribbon实现的工具...

2021-06-18 21:36:13 117

原创 2 注册中心 Spring Cloud Eureka 的使用与原理解析

1 简介Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系

2021-06-17 18:31:10 155

原创 1 Spring Cloud 简介,搭建简单的微服务场景并思考

1 简介SpringBoot是SpringCloud的基础 Spring Cloud是分布式系统开发的工具套件。 主要部分:注册中心、负载均衡、熔断器、远程调用、网关、配置中心、消息总线等 特点:Spring Cloud并没有重复制造轮子,它从架构层面,降低了对大型分布式系统构建的要求和难度,可以用低的成本(技术、硬件)搭建一套高效、分布式、容错的平台,适用于中小型公司。 缺点:不适用于小型项目。spring cloud 架构如下:...

2021-06-17 18:21:49 110

原创 Docker

1 Docker介绍

2021-06-16 00:20:25 77

原创 3 SpringBoot监听器

监听器就是监听某个对象的状态发生变化的组件。监听器的相关概念:事件源:被监听的对象监听器:用于监听事件源对象,事件源对象状态的变化都会触发监听器响应行为:监听器监听到事件源的状态变化时的响应...

2021-06-04 01:16:23 237

原创 4 SpringBoot中的自动配置

1 将对象导入Spring IOC容器的4种方式需求:public class UserServiceImpl implements UserService { @Override public void findAll() { System.out.println("假装我是一个service层的实现类方法==="); }}方式1:...

2021-06-04 01:15:15 172

原创 2 IDEA快速创建SpringBoot项目

1 目标在IDEA中,使用Spring Initializr 方式,快速创建SpringBoot工程浏览器输入地址:http://127.0.0.1:8080/sayHello浏览器显示内容:hi springboot2 实现步骤2.1 使用Spring Initializr 创建SpringBoot项目配置项目信息勾选起步依赖依赖的Jar包不再Pom文件手写了,而是直接勾选,方便了很多!勾选起步依赖之后,按照正常的步骤创建项目即可。到此为止,基本项目创建完毕,.

2021-05-30 04:36:11 541

原创 1 Maven搭建SpringBoot工程

1目标Maven搭建SpringBoot工程,实现web的请求响应。浏览器输入地址:http://127.0.0.1:8080/sayHello浏览器显示内容:hi springboot2 实现步骤2.1 创建Maven工程(1)IDEA新建一个空工程SpringBoot(2)空工程中新建一个模块springboot01-quickstart(3)进入该模块后弹出的窗口选择自动导包(4)删掉项目中的测试文件test,因为用不上2.2 pom.xml文件中配置起步依赖(.

2021-05-28 09:38:16 115

原创 Maven

1 Maven概述1.1 作用依赖管理:向工程中加入jar包不再手动从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到项目工程中。 项目构建:maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。此外,maven可以对工程分模块构建,提高开发效率。1.2 Maven仓库本地仓库:相当于缓存,工程第一次会从远程仓库去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。

2021-05-28 09:29:06 48

原创 实现Bean工厂

1 Bean工厂的作用一开始,我写好了类1.1(定义接口+实现接口),我在类2中需要使用类1.1的功能,那么最简单的方法就是在类2中创建类1的对象,然后调用类1的方法(直接使用类1的静态方法另当别论)后来,类1.1的功能需要增强才能满足新的需求了,要么直接修改类1.1,如果不想动类1.1,那就新建一个接口的实现类1.2于是在类2中,又重新的创建类1.2的对象,使用类1.2新增的方法上面的做法,虽然也很方便,但是问题在于“需要修改源代码”,至少需要在类2中重新创建新的需要使用的对象如果要想不修改源

2021-05-25 17:02:27 470

原创 Redis

1 Redis基础NoSQL(Not Only Structured Query Language),即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。而Redis是一款主流的NoSQL产品。1.1 概念Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,数据保存在内存里面。在官方提供测试数据中,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存

2021-05-10 16:28:05 299

原创 CentOS部署web项目

在此之前,已经完成了在CentOS中部署JDK、Tomcat、Mysql的操作接下来,把之前已经在Windows本地运行无误的一个web项目,部署到CentOS之中这里的“将web项目部署到CentOS之中”具体指的是:把web项目放到Tomcat里面但是具体放到哪个路径下面呢?由于这次要部署的web项目是没有项目名称的!这种“web项目不写项目名称"的做法,如果在IDEA里这样做是没问题的,因为IDEA自动把web项目在Windows中的路径“往后放”了,如下图是该web项目在

2021-04-09 20:03:05 1542

原创 CentOS部署Mysql

部署Mysql比较麻烦,主要有以下几个点需要注意,详情参考如下九个步骤(1)需要同时安装Mysql的服务端与客户端(2)登录Mysql需要使用指令登录,使用Mysql之前需要先修改初始密码,而获取初始密码是从一个文件中找到的(3)开放Linux系统中的3306端口,能够让来自外部的客户端,访问Linux服务器中所部署的Mysql(4)开启Mysql远程连接1 卸载系统中自带的MySQLrpm -qa | grep mysql 管道查询系统中是否已经安装了MySQL(如果管道查询没查到

2021-04-09 15:23:05 244

原创 CentOS部署Tomcat

1 Tomcat压缩包Tomcat压缩包名称为:apache-tomcat-8.5.33.tar.gz将Tomcat压缩包放到 /usr/local下,解释:/usr/local(主要用于存放手动安装的软件)是用户级的程序目录,用户自己编译的软件会默认安装在此。可使用SSH图形化界面直接从Windws系统中将压缩包拖拽到CentOS中2 解压cd /usr/local 切换路径tar -xvf apache-tomcat-8.5.33.tar.gz (解压缩,其中x表示解压缩,v表示

2021-04-09 10:33:09 585

原创 CentOS部署JDK

1 JDK压缩包JDK压缩包名称为:jdk-8u181-linux-i586.tar.gz将JDK压缩包放到 /usr/local下使用SSH图形化界面直接从Windws系统中将压缩包拖拽到CentOS中2 解压cd /usr/local 切换路径tar -xvf jdk-8u181-linux-i586.tar.gz (解压缩,其中x表示解压缩,v表示显示解压过程,f表示指定要解压的文件名)3 修改环境变量并让其生效vim /etc/profile 打开这个文件,进入...

2021-04-09 09:54:05 293

原创 CentOS6国内yum源失效解决方案

原因:目前,CentOS6已停止更新支持,并且官方将已有的yum源删除了,因此需要更换yum源,否则会出现更新软件失败的现象。解决方法:在终端上分别输入如下三行指令即可wget -O /etc/yum.repos.d/CentOS-Base.repo http://files.tttidc.com/centos6/Centos-6.repowget -O /etc/yum.repos.d/epel.repo http://files.tttidc.com/centos6/epel-6.repo

2021-03-28 01:24:16 1382 5

原创 Vue基础

1Vue相关学习链接(1)Vue官网(2)Vue在Github上的开源项目(3)Vue中文社区2 Vue的三个参数(1)el用于指定当前Vue实例对象所管理的HTML视图(标签),el的值通常是该视图所对应的id属性值,且el的值不能是html标签和body标签的id值。(2)data用于指定当前Vue对象的属性值(3)methods指定当前Vue对象的方法。3 Vue常用指令3.1 插值表达式会将绑定的数据实时的显示出来,如果通过任何方式修改了所绑定的.

2021-03-09 16:44:13 60 1

原创 会话、Cookie、Session

1 会话web会话:用户开一个浏览器,访问某一个web网站,在这个网站点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。注意:如果一个浏览器里面有多个选显卡,关闭其中一个,还剩下其他选项卡,则会话不关闭,直到把整个浏览器关掉,会话才会结束。重新打开浏览器就是第二个会话。...

2021-01-06 14:53:58 160

原创 各种对象介绍、重定向与转发、web项目创建与设置

1 ServletContext对象1.1 什么是ServletContext对象Tomcat服务器中的web的项目也叫做WEB应用程序。在java中,万物皆为对象,应用程序也是对象。在JavaWeb开发中,使用ServletContext对象表示WEB应用程序,如上图。关于web项目的区分见下图:1.2ServletContext对象的作用及演示(1)获取WEB应用程序的初始化参数。(2)获取WEB应用程序下任意资源的绝对路径。(3)ServletContext作为域对象,..

2020-12-29 11:56:13 255

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除