- 面试59
- JAVA58
- SPRINGBOOT29
- SPRING25
- K8S23
- DESIGN PATTERN14
- 设计模式14
- REACT10
- 前端10
- SPARK10
- DOCKER9
- 大数据8
- 分布式7
- DDD6
- 架构设计6
- MYBATIS5
- LINUX4
- KAFKA4
- SPRINGMVC4
- MYSQL4
- FLINK3
- ORM3
- PROBLEM3
- REDIS3
- MAVEN2
- MVC2
- 云原生2
- project2
- ALGORITHM2
- JVM2
- Spring1
- SpringFrameWork1
- ABOUT1
- 算法1
- HBASE1
- DRUID1
- 缓存1
基础
docker的工作原理是什么,讲一下
docker是一个Client-Server结构的系统,docker守护进程运行在宿主机上,守护进程从客户端接受命令并管理运行在主机上的容器,容器是一个运行时环境,这就是我们说的集装箱。
docker的组成包含哪几大部分
一个完整的docker有以下几个部分组成:
1、docker client,客户端,为用户提供一系列可执行命令,用户用这些命令实现跟 docker daemon 交互;
2、docker daemon,守护进程,一般在宿主主机后台运行,等待接收来自客户端的请求消息;
1 Docker简介
1.1 是什么?
1.1.1 问题:为什么会有docker出现?
假定您在开发一个尚硅谷的谷粒商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?
您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?
1.1 安装MySQL主从复制
1.1.1 主从复制原理
1.1.2 主从搭建步骤
- 新建主服务器容器实例3307
docker run -p 3307:3306 --name mysql-master \
-v /opt/mysql-master/log:/var/log/mysql \
-v /opt/mysql-master/data:/var/lib/mysql \
-v /opt/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
-d:后台运行容器
Kube-porxy组件
在K8s集群中微服务的负载均衡是由Kube-proxy实现的,它是K8s集群内部的负载均衡器,也是一个分布式代理服务器,在K8s的每个节点上都有一个,这一设计体现了它的伸缩性优势,需要访问服务的节点越多,提供负载均衡能力的Kube-proxy就越多,高可用节点也随之增多。kube-porxy负责为Service资源提供cluster集群内部的服务发现和负载均衡,它运行在每一个Node物理节点之上,负责为节点上的所有pod资源提供网络代理服务。他会定时的从etcd数据库获取到service维护的路由信息做出相应的负载策略,维护网络负载策略和4层负载均衡工作。
1.1、那些服务适合部署在k8s上?
1、进程间高度耦合的应用:此类应用具有高度耦合特点,不利于横向拓展。例如:应用间通信使用非API设计;单个进程启动依赖其他进程启停。此类应用建议改造,使用接口通信,利于横向拓展。例如使用共享内存,管道,信号、信号量等做进程间通信,就不适合部署在容器云上。
2、单个进程启动依赖其他进程启停,容器云是一种不可变的基础设施,POD在云上可以进行漂移,扩缩容,所以通过容器云建设的应用系统启停次数会比通过虚拟机建设的应用系统更加频繁一些。
3、此类应用具有大量存储IO读写的特点,不利于数据快速落盘和读取。例如:数据库。集中式的网络存储要求非常高,并且不可以随时进行横向扩展。典型的例如高吞吐的集中式数据库,高吞吐的有状态应用需要落地数据。
4、安全敏感的服务:例如,某些服务需要严格的安全控制,可能不适合部署在公共云或不受保护的环境中。
5、资源密集型应用程序:某些应用程序可能会消耗大量资源,如果部署在k8s上,可能会影响集群中其他服务的性能。(内存,cpu,网络,存储)