kubernetes的基础知识之pod

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月开始使用。

孔雀

鼓励的话语:海到尽头天作岸,山登绝顶我为峰。不屈的意志,会带我们杀出重围。具有坚定的信念,坚强的毅力,顽强的斗志,人生终将辉煌!