1、部署区别方式
1.1、传统部署
传统部署:环境不隔离
优点:简单,不需要其它技术的参与
缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响
1.2、虚拟化部署
虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境
优点:程序环境不会相互产生影响,提供了一定程度的安全性
缺点:增加了操作系统,占用资源较大
1.3、容器化部署:
与虚拟化类似,但是共享了操作系统
优点: 可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等 运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦 容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署
缺点删除了容器,配置的资源也会消失,(虽然可以用存储卷,网络,但是只是针对单台机器)
单台机器
1.4、k8s作用
多台机器
kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能: 自我修复重启:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器 弹性伸缩pod:可以根据需要,自动对集群中正在运行的容器数量进行调整 服务发现:服务可以通过自动发现的形式找到它所依赖的服务 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本 存储编排:可以根据容器自身的需求自动创建存储卷
2、k8s架构
分为主节点和从节点
主节点:认证授权,api,调度器,控制器,通过这些操作node节点
用户通过命令行kubectl,访问rest,通过rest(我们用命令,k8s收到的时rest请求)操作对应的node
外部人员访问:防火墙,主节点的apiserver,访 问node
3、调用流程
4、K8s中什么是无状态和有状态应用
无状态:不会对本地磁盘产生依赖,不回存储数据到本地磁盘
有状态:相反
需要进行持久化存储的是无状态应用,比如redis
5、规约和状态
spec:规约,期望状态(比如允许几个容器)
status:实际状态,尽量靠近期望状态(比如期望3个容器,资源有限只能启动2个)
6、资源分配作用域
元空间:hpa 自动伸缩pod,模版yaml,存储分配
集群
命名空间
获取资源的作用域
7、控制器
日志可以用守护进程
定时执行
7.1、replicationController (RC)
动态增加pod数(弃用)
7.2、replicaset (RS)
只针对某个结点扩容 (弃用)
7.3、deployement (无状态服务)
高于rc,rs
滚动回滚(创建新的容器可用后,将原来变为不可用 )
7.4、statefulSet(有状态服务)
headless service 稳定网络标识 dns
volumeClaimTemplate 持久化存储
7.5、deamonset守护进程
将日志手机pod部署到对应节点