【Day04】Spring Cloud 升华篇:容器化技术docker和kurbernetes

一、介绍

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)

 

posted @ 2021-08-30 21:27  哥们要飞  阅读(162)  评论(0编辑  收藏  举报