第143天学习打卡( Kubernetes 初识K8s Pod)
Posted doudoutj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第143天学习打卡( Kubernetes 初识K8s Pod)相关的知识,希望对你有一定的参考价值。
Kubernetes
MESOS APACHE 分布式资源管理框架
Docker Swarm
Kubernetes 特点:
- 轻量级:消耗资源小
- 开源
- 弹性伸缩
- 负载均衡:IPVS
K8S是一个开源的,用于管理云平台中多个主机上的容器化的应用, K8S的目标是让部署容器化的应用简单并且高效,K8S提供应用部署,规划,更新和维护的一种机制。
传统的应用部署方式是通过插件或脚本来安装应用的,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,不利于可移植性。
新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以他能在不同云、不同版本操作系统之间进行迁移。
容器占用资源少,部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试,生产能提供一致环境。类似的,容器比虚拟机轻量,更透明,这便于监控和管理。
K8S功能:
-
自动装箱
- 基于容器对应用运行环境的资源配置要求自动部署应用容器
-
自我修复(自愈能力
- 容器失败时,会对容器进行重启
- 当所部署的Node节点有问题时,会对容器进行重新部署和重新调度
- 当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
-
水平扩展
- 通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模剪裁
-
服务发现
- 用户不需要使用额外的服务发现机制,就能基于K8S自身能力实现服务发现和负载均衡
-
滚动更新
- 可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
-
版本退回
- 可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
-
密钥和配置管理
- 在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署
-
存储编排
- 自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务
-
批处理
- 提供一次性任务,定时任务;满足批量数据处理和分析的场景。
基础概念:什么是Pod 控制器类型 K8s 网络通讯模式
kubernetes:构建K8s集群
资源清单:资源, 掌握资源清单的语法,编写Pod 掌握Pod的生命周期
Pod控制器:掌握各种控制器的特点以及使用定义方式
服务发现:掌握SVC原理及其构建方式
存储:掌握多种存储类型的特点,并且能够在不同环境中选择合适的存储方案
调度器:掌握调度器原理 能够根据要求把Pod定义到想要的节点运行
安全:集群的认证 鉴权 访问控制 原理及其流程
HELM: Linux yum 掌握HELM原理 HELM自定义模板 HELM部署一些常用插件
运维:修改Kubeadm达到证书可用期限为10年或者更久, 能够构建高可用的Kubernetes集群。
服务分类:
- 有状态服务 :DBMS
- 无状态服务:LVS APACHE
高可用集群副本数据最好是 >=3 基数个
K8S架构:
etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。
etcd的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft
协议作为一致性算法,etcd基于Go语言实现。
etcd作为服务发现系统,有以下的特点:
- 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
- 安全:支持SSL证书验证
- 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
- 可靠:采用raft算法,实现分布式系统数据的可用性和一致性
APISERVER:所有服务访问统一入口
ControllerManager:维持副本期望数目
Scheduler: 负责介绍任务,选择合适的节点进行分配任务
ETCD:键值对数据库,存储K8S集群所有的重要信息(持久化)
Kubelet:直接根容器引擎交互实现容器的生命周期管理
Kube-proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问的
COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
Dashboard:给K8S集群提供一个B / S结构访问体系
INGRESS CONTROLLER: 官方只能实现四层代理,INGRESS可以实现七层代理
FEDERATION:提供一个可以跨集群中心多K8S统一管理功能。
Prometheus:提供K8S集群的监控能力
ELK:提供K8S集群日志统一分析接入平台.
Pod
自主式Pod
控制器管理的Pod
ReplicationController & ReplicaSet & Deployment
ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代,而如果异常多出来的容器也会自动回收。在新版的Kubernetes中建议使用ReplicaSet来取代ReplicationController.
ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector
虽然 ReplicaSet 可以独立使用,但一般还是建议使用Deployment来自动管理 ReplicaSet ,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持rolling-update但Deployment支持)
**Horizontal Pod Autoscaling 仅适用于Deployment和ReplicaSet,**在V1版本中仅支持根据Pod的CPU利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容。
StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括:
- 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
- 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP 的Service)来实现
- 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(即从0到N-1, 在下一个Pod运行之前的Pod必须都是Running 和 Ready状态),基于init containers来实现
- 有序收缩,有序删除(即从N-1到0)
B站学习网址:k8s教程由浅入深-尚硅谷_哔哩哔哩_bilibili
以上是关于第143天学习打卡( Kubernetes 初识K8s Pod)的主要内容,如果未能解决你的问题,请参考以下文章
第156天学习打卡(Kubernetes 搭建监控平台 高可用集群部署 )
第149天学习打卡(Kubernetes 部署nginx 部署Dashboard)