k8s集群搭建指南
一、简介
Ansible
Docker
Docker compose,docker swarm,docker machine
Mesos,marathon
Kubernetes(占据80%的市场)
DevOps:
Devops,MicroServices,Blockchain
CI:持续集成
CD:持续交付,Delivery
CD:持续部署,Deployment
Plan-设计-开发-构建-测试(自动实现这一系列流程叫持续集成)
-运维(获取打包好的包叫持续交付)
- 持续部署
K8s(剁手,飞行员):
Borg
自动装箱(自动完成部署)
自我修复
水平扩展
服务发现和负载均衡
自动发布和回滚
秘钥和配置管理集中化(配置中心)
存储编排
批量处理执行
集群:
许多台主机当成一台主机来使用
有中心节点架构的模型
Master/nodes
Master(高可用,3台)
组件叫API Server
调度器(scheduler):负责观测node的节点资源使用情况(预选,优选)
控制器管理器(controller manager)---主备
Nodes(worker):运行容器的节点
Client->master-node
Kubelet:集群代理(启动并管理pod)
容器引擎:docker
Pod:k8s最小的调度的逻辑单元
容器的外壳,pod内运行容器,共享nat、uts和ipc
共享存储卷
一般来说一个pod内只放一个容器
在一个资源池内进行统一管理(dockfile中打标签来进行区分)
Label Selector:标签选择器
Label: K=v
Master/node
Pod分类:
自主式pod:
控制器管理的pod
replicationController:副本控制器
管理pod状态
滚动更新
replicaSet
Deployment(管理无状态的pod)
statefuSet(有状态的)
DaemonSet
Job,cronjob
HPA(HorizonTalPodAutoscaler):自动控制器,根据负载需求调整pod个数
Pod生命周期需要用到服务发现机制
Service管理pod(调度),根据label标签来关联pod对象
Client - >service -> pod*N
DNS对service进行解析
AddOns:附件(附加组件)
客户端和pod之间的桥梁:service(固定不变)
Label(标签):固定不变,连接service-----名称解析(DNS)
NMT
Nginx对外:
Tomcat
M:db
LBaas
K8s网络(三个网段的网络)
Pod网络
Service(集群)网络(虚拟网络只存在与iptables或ipvs之中)
节点网络
Overlay Network,叠加网络
同一个pod内的多个容器间:lo
各个pod之间的通信(snat-dnat,两级pod转换),通过主机访问pod
Pod与service之间的通信(宿主机规则)
Kube-proxy:
对service进行管理
共享存储
Etcd
CNI:容器网络接口(网络解决方案)
Flannel:网络配置(叠加网络)
Calico:支持网络配置和网络策略(三层隧道网络)
Canel(Flannel+Calico):
架构图: