- 特点
- 不限语言
- 无侵入, 服务只写业务
- 适合微服务 # 调整服务副本数, 横向扩容
- 无缝迁移到公有云 # cluster ip实现不改配置迁移
- 自动化资源管理
- 服务发现,用dns解析服务名
- 内嵌负载均衡
- 部署实施
- 治理
- 监控
- 故障发现、自我修复
- 透明服务注册、发现
- 服务滚动升级、在线扩容, 根据负载自动扩容缩容
- 可扩展资源自动调度、多粒度资源配额
- 多层安全防护、准入
- 多租户
- 完善的工具
- pod运行容器
- etcd保存所有状态
- 概念
- service # 服务网关
- 特点
- 唯一名字
- 唯一虚拟ip(cluster ip, service ip, vip) # 可多端口,每端口有名字
- 提供远程服务 # 目前socket
- 应用到一组pod
- event # 探针检测失败记录,用于排查故障
- rc # replication controller
- 副本数
- 筛选标签
- pod模板
- 改变pod镜像版本,滚动升级
- replica set # 1.2 rc升级, 支持基于集合的标签选择。被deployment使用
- deployment # pod编排, rc升级
- HPA
- horizontal pod autoscaler, 自动扩容缩容
- 指标
- cpu utilization percentage # 1分钟内利用率平均值
- 应用自定义指标(tps, qps)
- volume
- emptyDir
- hostPath
- gcePersistentDisk
- awsElasticBlockStore
- NFS
- persistent volume
- namespace
- annotation
- 镜像
- kube-apiserver
- kube-controller-manager
- kube-scheduler
- kube-proxy
- pause
- etcd
- coredns
- 架构
- cluster
- master
- api server # 对外http rest接口, 管理资源对象(pod, RC, service)增删改查
- controller manager # 管理控制器, node, pod, endpoint, namespace, serviceAccount, resourceQuota自动化管理
- scheduler # 接收controller manager命令执行pod调度
- etcd # 配置
- node # 一master多node
- 特点
- pod # 一node几百个pod, 基本操作单元,代表一个运行进程,内部封装一个(或多个紧密相关的)容器。
- 特点
- pod内通信高效,放密切相关服务进程
- 可以判断一组相关容器的状态(用pause)
- pause解决共享ip、容器通信、共享文件的问题
- pod间通信用虚拟二层协议(flannel, openvswitch)实现
- 普通pod在etcd存储,再调度到某node实例化,静态pod在node中存储,在node实例化
- 对pod可进行资源(cpu,内存)限额
- label # 标签,用标签选择器选择。key和value由用户指定,可附加到node, pod, service, rc等
- pause容器 # 根容器,共享网络栈、挂载卷
- docker/rocket # 容器
- kubelet # master监视pod, 创建、修改、监控、删除
- kube-proxy # 代理pod接口
- fluentd # 日志收集、存储、查询
- kube-dns # 服务dns解析