k8s基础
一、pod
1、pod是由namespace进行隔离,不同namespace下有不同的pod,在namespace下面创建pod
2、PV是不具备有隔离性
3、pod是K8s最小的单元,由一组,一个或多个容器组成,每个pod启动还会包括一个Pause镜像,pause容器是pod容器的父容器,负责僵尸进程的回收,通过pause容器可使用一个pod里多个容器共享存储,网络,PID,ipc等
4、一个容器最多起一个进程
5、创建资源(pod等)一般用yaml文件创建
6、探针
(1)StartupProbe:判断容器内应用程序是否启动
(2)LivenessProbe:探测容器是否运行
(3)ReadnessProbe:探测容器内的程序是否健康
7、pod探针的检测方式:
(1)execAction在容器内执行一个命令,返回值为0则认为是健康的
(2)TCPSocketAcction:通过TCP连接检查容器内的端口是否通
(3)HTTPGetAction:通过应用程序暴露的API地址来检查程序是否健康(常用)
8、pod退出流程:
用户删除后,pod编程terminating状态,endpoint删除pod的IP地址,执行prestop指令
二、RC RS
1、RC:replication Controller可确保pod副本数达到期望值,当一个pod被删除后,会自动增加一个pod,不支持回滚
2、ReplicaSet:是支持基于集合的标签选择器的下一个replication controller,主要用作DEPLOYMENT协调创建,删除和更新pod,可单独使用,但建议使用Deployment来自动管理ReplicaSet
三、Deployment StatefulSet DaemeonSet(常用)
1、deployment用于部署无状态的服务,最常用的控制器,可用于管理多个副本的Pod实现无缝迁移,自动扩缩容,自动灾难恢复,一键回滚
创建pod不一定会有deployment ,但创建deployment一定会有pod

2、可通过命令行或文件创建
3、deployment状态解析:
name:deployment名称;READY:pod的状态,已经ready的个数;
up-to-date:已经达到期望状态被更新的副本数(升级)
4、修改deployment的template的数据更新RC,默认是滚动发布
5、deployment扩容与缩容:kubectl scale --replicas=3 deploy name (修改副本数,不改变RS)
6、deployment更新暂停
7、StatefulSet:有状态的而应用部署,ES集群,MQ,redis等,按顺序启动pod,并赋予名字标识,每个pod连接一个动态PV存储,适用于:
(1)有稳定独一无二的网络标识符(2)持久化数据(3)有序,优雅的部署,扩展(4)有序的自动滚动更新
8、DaemeonSet:守护进程集,缩写为ds,在所有节点或匹配的节点上都部署一个pod
例如CEPH集群:运行集群存储的daemon,节点网络插件,calico,几点日志的收集等
四、服务发布(Service Ingress)
1、东西流量:服务间的访问;---service
南北流量:指用户从外网访问内网的流量 ----ingress
2、传统架构spring cloud 服务注册中心eureka实现服务发现
3、东西流量:service根据selector标签匹配到后端Pod,服务间的互访使用service
4、南北流量:ingress配置域名,到service上,根到前端,path到后端
5、每一次删除更新重建Pod的IP地址都会发生改变(弹性部署,随机调度)
6、service可以简单的理解为逻辑上的一组Pod,service的name固定不变
7、etcd是一个高可用的键值存储系统,主要用于共享配置与服务发现,是一个高可用强一致性的服务发现存储仓库
8、etcd使用Raft协议来维护集群内各个节点状态的一致性,ETCD集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点存储了完整的数据,通过Raft协议保证每个节点维护的数据是一致的
浙公网安备 33010602011771号