k8s本质是一个容器编排系统,可以管理容器的生命周期,应用部署,更新,维护,应用提供服务,扩容缩容应用,故障自愈。
docker:是一种轻量级的虚拟化技术。运维层面主要用途是:隔离各个应用部署时在系统上的冲突。一般使用dockerfile来自定义容器创建。
k8s是容器管理工具。它可以实现容器集群的自动化部署,自动化扩容,缩容等功能
k8s集群将机器划分为一个master结点和一群工作结点node
在mster结点机器上运行这一组进程: kube-apiserver, kube-controller-manager 和 kube-scheduler , 这些进程管理这集群资源的调度, 弹性伸缩 Pod调度, 安全控制,系统监控 等功能
Minikube 是一个本地运行单节点的k8s集群工具
Kubectl 是一个命令行工具,检查集群资源,创建,删除和更新组件,查看应用程序
Kubelet是一个代理服务,在每个结点上运行,并使从服务器与主服务器通信
1. 节点管理
kubelet启动时会向api-server进行注册,然后定义的向api-server汇报本节点的状态,资源使用情况,节点是否失联等相关信息,master知道整个集群所有节点的资源情况。
2. pod管理
kubelet负责维护node节点上pod的生命周期(创建,更新,删除)
3. 容器健康检查
pod中包含: 启动探针,存活探针,就绪探针。k8s会定期使用探针来检测容器是否存活,是否就绪。
4. metrics Server资源监控
node节点上metrics Server 用于监控Pod 的内存,CPU,网络等资源使用情况。
k8s不会直接处理容器,使用多个容器共存的理念,这组容器就叫做pod
pod是k8s中可以创建管理的最小单元,也是基本单元。
1. 每个pod就像一个独立的逻辑机器,k8s会为每个pod分配一个集群内部唯一的IP地址,所以每个pod都有自己的IP地址,主机名,进程等。
2. 一个pod可以包含一个或多个容器,1个pod只能运行在单个节点上,不可能1个pod跨节点运行。
3. 每个pod都有一个被称为“根容器”的pause容器,也称info容器,pause容器对应的镜像属于k8s的一部分
4. 一个pod里的多个容器共享一个pod的IP , 意味这一个pod里面的多个容器所占用的端口不能相同,否则端口冲突。
5. pod是k8s中扩容,缩容的基本单位,k8s的缩容 扩容都是针对pod 而非容器、
Pod重启容器的策略是针对pod内所有容器的重启策略 , 不是重启pod
Always: 当容器终止退出后,总是重启容器,默认策略是Always
OnFilure: 当容器异常退出,退出状态码非0时,才重启容器
Never: 当容器终止退出,不管退出状态码是什么,从不重启容器。
1. 一个pod刚创建的时候,会处于pending状态,正在拉取镜像,或正在创建容器的过程中
2, 调度器调度失败,Scheduler调度器无法为pod分配一个合适的node结点
3. pvc pv 无法动态创建。
直接修改pod副本数即可
1. 修改yaml文件replicates字段数值, 然后 kubectl apply -f xxx.yaml 来实现更新
2. 使用 kubectl scale --replicates=5 deployment/deployment-nginx 命令来扩容缩容
1. recreate 重建更新, 会杀死集群所有正在运行的pod 然后在重新创建pod
2. rollingUpdate 滚动更新,在集群中逐个更新pod
在升级deployment时kubectl set image 命令加上 --record 参数可以记录具体的升级历史信息
使用 kubectl rollout history deployment/deployment-nginx 命令查看deployment升级历史记录
回滚到某个指定版本 kubectl rollout undo deployment/deployment-nginx --to-revision=2 命令来实现
1. nodeport: 最常用 用来对集群外暴露service 可以通过NodeIP:NodePort方式访问到service后端的endpoint
2. ClusterIP: k8s默认的ServiceType 通过集群内的ClusterIP在内部发布服务
etcd 是一个分布式,高可用,一致的key-value存储数据库
1 完全复制: 集群中每个节点都可以使用完整的存档
2.高可用性: 避免单点故障或网络延迟问题
3.一致性: 每次读取都会返回多主机的最新写入。
使用 HPA(Horizotal Pod Autoscaler) 控制器基于CPU使用率自动进行Pod扩缩容的功能
HPA周期性检查Pod资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,满足条件对Pod副本数量进行调整。