pod是容器组,是kubernetes 集群中的最小调度单位。
docker里面部署的是容器,在kubernetes 里面部署的是pod,pod的本质是容器组。
CNI:容器网络接口。
网络插件类型:calico和flannel。
探针类型:
就绪探针 readinessProbe
启动探针 startupProbeV1.16版本之后添加的内容
存活探针 livenessProbe
service的类型:
ClusterIP给集群内部的用户使用,nodePort给集群外部的用户使用,LoadBalancer是特定的云厂商提供服务,ExternalName是一种DNS的别名机制。
service是一个四层的负载均衡。
负载均衡集群包括:负载调度器、真实服务器、共享存储。
Service相当于负载调度器,pod相当于真实服务器,kubernetes支持的不同存储类型相当于共享存储。
calico的工作模式有:vxlan、IPIP、BGP。
pod的控制器类型:
①:deployment适合无状态的服务部署
②:statefulset 适合有状态的服务部署
③:Daemonset 一次部署,所有的node节点都会部署
④:Job 一次执行的任务
⑤:Cronjob 周期性执行的任务
⑥:RC ReplicationController
⑦:RS ReplicaSets
⑧:Horizontal Pod Autoscaler
kubernetes的secret是基于base64的编码。
kubernetes使用3A服务来保证API Server的安全,包括:认证Authentication、鉴权Authorization、准入控制Admission Control。
鉴权一般是rbac。
测试环境:一主两从
高可用方案:三主两从
私有镜像仓库harbor。
传统部署方式:硬件--操作系统--操作系统里面部署应用程序APP,应用程序比如apache、MySQL或者nginx。
安全性与服务器的资源利用率是相反的关系。要求的安全性高,那么资源的利用率就低。
基于虚拟化的部署方式:底层是硬件,硬件上面安装操作系统,操作系统里面出现一个虚拟化层hypervisor。有了这个虚拟化层之后,就可以在一台物理机里面运行多个虚拟机VM。每个虚拟机里面可以运行相对隔离的应用程序。这样应用程序之间是隔离开的,具有较高的安全性。虚拟化层不提供资源,随着虚拟机数量的增加,操作系统的数量也会增加,浪费的资源会增多。
以容器为首的部署方案:硬件跑操作系统,在操作系统里面有容器的运行时container runtime,应用放在不同的容器空间中彼此隔离。多个容器每个容器运行不同的应用程序,没有虚拟机本身的操作系统这种资源消耗。在容器化的部署方案里面,既保证了应用间彼此的隔离,也不会出现像传统虚拟化方案中的操作系统资源的浪费。
容器化方案相对于传统的虚拟化的方式来说,容器的安全性是下降的。对于资源的利用率来说,容器化的方案比传统虚拟化的资源利用率高。
IaaS:基础设施即服务,Infrastructure As A Service。IaaS可以向平台申请虚拟机,然后部署应用程序。比如OpenStack或者VCenter,OpenStack是目前IaaS的主流框架。OpenStack规模越大,成本越低。
PaaS:平台即服务,Platform As A Service。PaaS可以直接访问应用。PaaS的平台很多,比如:kubernetes、Rancher、Mesos,PaaS的底层是基于容器和虚拟化的技术做的。
云计算三种典型分类:IaaS、PaaS和SaaS。
SaaS:软件即服务,Software As A Service,是一种开发做的多租户的场景。
实现IaaS,要用openstack。
kubernetes是一种PaaS为主的路径。
实现PaaS有好几种实现方案,比如docker swarm、Mesos、kubernetes。
docker swarm是docker公司开发的集群化管理软件,用来实现PaaS的一个框架。
Docker swarm是docker官方提供的一款集群管理工具,它的作用是把很多台docker主机抽象成为一个主体,并且通过一个入口统一管理这些docker主机上的docker资源。想要运行一个容器,它就会自动地从多台docker主机中选择一个最靠谱的去运行当前容器。
docker swarm被集成在docker的软件包内,我们只需要执行docker swarm init就可以初始化出来一个docker集群。
Mesos是一个集群管理器,类似于yarn。它提供了有效的、跨分布式应用或者框架的资源隔离与共享。它可以运行Hadoop、Hypertable、Storm、Spark。
Kubernetes对资源的管控能力很强。kubernetes是一个集群管理软件,也是一个资源管理系统。
kubernetes自带服务发现和负载均衡的功能,之前部署负载均衡,需要使用lvs或者nginx做负载调度器,现在可以使用kubectl create service创建负载均衡的服务。
kubernetes支持存储编排,可以添加本地存储或者云服务器。
kubernetes可以实现自动部署和回滚,可以使用命令rollout实现回滚的功能。
kubernetes可以支持自动分配CPU资源和内存资源,实现弹性伸缩。kubernetes允许自定义一个CPU的阈值,当应用使用的资源超过阈值时,可以自动扩展。
kubernetes支持自我修复,容器可以秒级启动。
kubernetes有一个secret的管理方案,也可以进行配置管理。kubernetes可以对敏感数据做编码,如果要看敏感数据需要解码。
kubernetes对大型规模也是支持的。kubernetes可以管理很多台物理机,kubernetes建议:
①:每个节点的pod数量不超过110个
②:节点数不超过5000
③:pod总数不超过150000
④:容器总数不超过300000
单个kubernetes集群的节点数量最好不超过5000个。
kubernetes是开源的资源管理系统,任何人都可以参与到这个kubernetes的开源项目中来。
开源的生态:取之于开源,供给于开源。
谷歌borg是谷歌早期开发的集群管理系统,用来管理大规模的容器化工作负载,是谷歌内部非常关键的基础设施。borg从2003年开始使用,Borg的调度器设计、作业类型、资源分配和故障隔离这些特性被kubernetes所吸收和借鉴。
Omega是谷歌borg的一个后继系统,2013年开始开发,用来解决Borg在大规模、动态、多租户环境下的使用。Omega的多租户和声明式配置被借鉴到kubernetes中。
kubernetes自从2014年6月开始使用。
孔雀
鼓励的话语:海到尽头天作岸,山登绝顶我为峰。不屈的意志,会带我们杀出重围。具有坚定的信念,坚强的毅力,顽强的斗志,人生终将辉煌!