k8s的核心功能:
1.自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。
2.弹性伸缩: 通过监控容器的cpu的负载值,增加容器的数量
3.服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个DNS 名称,并可以在它们之间进行负载均衡。
4.滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。
k8s组件:
Master:
APISERVER: 所有服务访问统一入口
CrontrollerManager: 维持副本期望数目
Scheduler: 负责任务接收, 选择合适的节点进行分配任务
ETCD: 键值对数据库, 储存K8S集群所有重要信息(持久化)
Worker:
Kubelet:直接跟容器引擎进行交互实现容器生命周期管理
kube-proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问
Pod: k8s最小管理资源的单位
自主式Pod: Pod里面能运行多个Docker而且共享同一个IP和存储空间
Controller管理Pod: 控制Pod的状态和行为
控制器种类ReplicaSet、Deloyment, Job, CronJob
通讯方式:
同一个Pod内部通讯: 共享同一个网络命名空间, localhost就可以
不同Pod通讯:
同一台机器由网桥直接转发至另一个Pod
不同主机通过Flannel
外网通过Service,通过lvs维护和转发
k8s资源清单:
资源清单是创建Pod的方式
Init(初始化数据): 做就绪检测
探针:
三种检测方式:
ExecAction(命令返回码为0则认为诊断成功)
TcpSockerAction(对指定端口的容器ip地址进行TCP检测,如果端口打开,诊断成功)
HttpGetAction(对指定端口路径执行http的get请求, 响应码>=200<400, 诊断成功)
readness(就绪探测): 指示容器是否准备好服务请求,如果就绪检测失败, 端点控制器
将从Pod匹配的所有Service的端点中删除Pod的IP地址。
初始延迟之前的就绪状态默认为Failure。如果不提供探针,则默认为Success。
liveness(存活探测): 指示容器是否正在运行, 如果存活探测失败,则会杀死容器,
并且容器将受到重启策略影响。如果容器不提供存活探针, 则默认为Success。
服务发现Service:
TODO