一、介绍

1、要考虑的问题

  • 微服务数量有很多
  • 中间件的部署-nacos-server sentinel-server
  • 如何部署多个服务和中间件?

2、存在问题---机器上直接解压使用

  • 资源利用率的问题(CPU 内存 资源)
  • 迁移的问题(centos迁移到Ubuntu等其他服务器上,版本不一致)
  • 上述问题在单体架构上不会出现,当面对成百上千的服务时,需要频繁考虑迁移

二、docker介绍

1、概述

不同系统上均安装docker,类似不同机器上的JVM

同一个class文件就可以放在不同的平台上执行

2、docker engine、image和container的关系

通过image创建多个container

image可以使用下载的,或者自己创建的image

下载官方的image:hub.docker.com

3、使用

现寻找image,再根据image创建container

下载:docker pull tomcat 【官方镜像】

启动:docker run -d -name tomcatic tomcat

查看ip地址:ip a

查看端口是否被占用:lsof -i 888

端口映射:-d 8081:8080

4、自己的微服务项目 vent.jar

可以正常运行jar包

java -jar vent.jar

怎么做成image?

  • 创建Dockerfile文件
  • 内容如下

  • 生成命令:docker build -t vent .    使用当前路径下的Dockerfile文件

5、使用

查看:docker images

启动:docker run -d --name vent -p 8000:8080 vent

创建另一个container实例:docker run -d --name vent -p 8001:8080 vent

实现了自己的微服务创建image,并得到container

6、使用

当前image只能放到自己的服务上,别人需要

可以将其放到自己的镜像仓库中

7、 将本地仓库推送到命名空间

为镜像重新命名:docker tag pay-service-image http:xxx

打标签

查看所有容器: docker ps -aq

8、问题

很多镜像的访问量很大,某台机器的资源不够时,可以使用多个机器,均安装好docker-engine

资源就可以更加随意的进行分配

docker集群如何进行操作和管理。

9、解决

可以使用扣吧奶忒四

三、Kubernetes

1、介绍

生产级别的容器编排系统

架构图

k8s创建container,实际上是通过pod,而不是直接操作container

pod的创建通过kubelet

2、k8s集群的搭建

地址/工具或解决

各个组件也都是由pod组成的,pod是k8s创建的最小 单元

3、使用Minikube搭建kurbernete集群

Minikube是搭建单机版k8s集群的小工具

单机版集群(本地单节点):master和worker node在同一个机器上

搭建本地的多个节点的k8s集群:使用kubeadm【笔记】

方式:运行minikube start

根据业务需求进行选择

4、使用

kubetcl  get pods

查看命名空间

5、通过yaml文件实现对pod的管理

Deployment--使用的controller manager类型

配置的labels

可以对容器打标签:app tomcat

通过匹配关系对pod进行管理

6、k8s使用service对容器进行负载均衡

通过选择器进行选择

7、查看创建的命名空间

查看虚拟ip

docker里面可以成功访问

外部访问

外网ip:NodePort端口,自动做负载

8、其他的yaml示例

外网ip:NodePort端口,自动做负载

负载均衡算法:根据浏览器ip做会话的返回

9、对自己创建的服务运行在k8s集群中

把镜像拿过来

会调度到不同的机器

可以选择不同的负载均衡算法

10、大促场景

之前:运行多台jar包

现在:随意扩容缩容

实际上扩缩容可以自动完成

评判标准:入口流量/根据k8s资源进行

组件:Horizontal可以根据CPU的利用率对组件自动扩缩容

查看暴露的端口

11、dashboard

三、总结

1、之前的问题

解决服务部署和中间件的部署

面对频繁的迁移,私有云到公有云

可以将二者理解为建立在云平台上的服务器

实现了云原生,可以解决频繁的迁移

2、kurbernetes成为云原生基础设施的支撑

HELM是k8s中的yalm,实现方便的管理

service mesh

CICD:持续整合集成

自己编程后,进行push,jenkins会自动建立docker镜像,并push到docker hub,k8s就可以从docker hub上拉取镜像

3、其他工具

K3S:简化组件,没有k8s那么重(轻量级k8s)

【Day04】Spring Cloud 升华篇:容器化技术docker和kurbernetes的更多相关文章

  1. 新一代Java程序员必学的Docker容器化技术基础篇

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  2. Spring Cloud第二篇 | 使用并认识Eureka注册中心

    ​ 本文是Spring Cloud专栏的第二篇文章,了解前一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 ​​ 一.Sprin ...

  3. Spring Cloud第九篇 | 分布式服务跟踪Sleuth

    ​ ​本文是Spring Cloud专栏的第九篇文章,了解前八篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cl ...

  4. Docker容器化技术(下)

    Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...

  5. Docker容器化技术(上)

    目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...

  6. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  7. 【转帖】使用容器化和 Docker 实现 DevOps 的基础知识

    使用容器化和 Docker 实现 DevOps 的基础知识 https://www.kubernetes.org.cn/6730.html 2020-02-24 15:20 灵雀云 分类:容器 阅读( ...

  8. [第八篇]——Docker 容器使用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. xxx@xxx:~# docker 可以通过命令  docke ...

  9. [第九篇]——Docker 镜像使用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 镜像使用 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理 ...

  10. [第七篇]——Docker Hello World之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用  docker run 命令来在容器内运行一个应用程序. 输出Hello world xxx@xxx:~$ do ...

随机推荐

  1. 使用Prometheus和Grafana监控emqx集群

    以 Prometheus为例: emqx_prometheus 支持将数据推送至 Pushgateway 中,然后再由 Promethues Server 拉取进行存储. 注意:emqx_promet ...

  2. Elasticsearch删除操作详解

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484022&idx=1&sn=7a4de21 ...

  3. Ubuntu20.04和Docker环境下安装Redash中文版

    创建Ubunt20.04虚拟机,请参考:https://www.linuxidc.com/Linux/2020-03/162547.htm 一.安装基础环境: # 1.更换APT国内源 sudo se ...

  4. Dapr 长程测试和混沌测试

    介绍 这是Dapr的特色项目,具体参见: https://github.com/dapr/test-infra/issues/11 ,在全天候运行的应用程序中保持Dapr可靠性至关重要.在部署真正的应 ...

  5. 用户输入学号,如果是以aabcddef开头,并且后边是4位数字,前两位大于06小于等于当前年份。判断用户输入是否合法

    package seven_topic; import java.util.*; public class p_19_1 { public static void main(String[] args ...

  6. 驱动开发:内核通过PEB得到进程参数

    PEB结构(Process Envirorment Block Structure)其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存在一个特有的PEB结构 ...

  7. 汇编指令:lea

    lea指令变种(按大小分类): leaw #2个字节 leal #4个字节 leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先lea指令是mov指令的变种,据说,l ...

  8. Maven中POM文件总体配置说明

    POM文件总体配置说明 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  9. 前后端代码分离开发(Vue)

  10. sql语法巧用之not取反

    数据库的重要性和通用性都不用说了,什么sql的通用性,sql优化之类的也不必说了,咱们今天来聊聊另一个有意思的话题:如何取一个筛选的反面案例. 1. 举几个正反案例的例子 为了让大家理解我们的假设场景 ...