Kubernetes 基础概念
Kubernetes(k8s)是一款开源的以容器为中心的,用于跨主机集群自动部署(automating deployment),控制容器扩展/收缩(scaling)和管理容器化应用程序(management of containerized applications)的基础平台。
Kubernetes功能
自动配载(Automatic binpacking):在保证应用服务可用前提下,每个容器所占用资源会根据实际情况与配置约束进行自动分配;
自我修复(Self-healing):如果容器出错,在尝试重启失败后它将会被替换与重新编排;k8s也会自动关闭由你定义为“不健康”的容器;只有“健康”的容器才会被用于提供应用服务;
横向扩展(Horizontal scaling) : 可以通过一个简单的指令、界面操作或CPU使用情况,来控制你的应用程序扩展或收缩;
服务发现与负载均衡(Service discovery and load balancing):无需修改你现有的应用程序便可使用“服务发现”;k8s为容器提供了一个虚拟网络环境,每个容器拥有独立的IP地址与DNS名称,使得他们之间可以相互访问,提供了负载均衡的基础。
自动部署与回滚(Automated rollouts and rollbacks):k8s支持滚动更新模式,能逐步替换当前环境的应用程序与配置,同时检测整体应用服务运行情况,以确保不会在同一时刻终止所有容器,导致服务瘫痪;如果在部署过程出现问题,k8s将会回滚本次部署所有操作。
安全与配置管理(Secret and configuration management):在容器镜像与异常信息堆栈中不会暴露你的部署信息、更新秘钥以及应用程序配置。
存储编排(Storage orchestration):k8s能挂接到你所选的存储系统,无论是本地存储、网络存储、云端存储都支持。(如:GCPAWSNFSiSCSIGlusterCephCinderFlocker)
批处理(Batch execution):除了服务以外,k8s还能管理你的批处理与“CI workloads”;如果有需要可以在容器出错时执行你的批处理指令。
容器技术的优势
敏捷的创建与部署(Agile application creation and deployment)
持续式开发、集成与部署(Continuous development, integration, and deployment)
dev与ops职能分离(Dev and Ops separation of concerns)
统一开发、测试、生产环境(Environmental consistency across development, testing, and production)
可在单机与云之间移植(Cloud and OS distribution portability)
以应用为中心的管理(Application-centric management)
松耦合、分布式、弹性计算,释放微服务(Loosely coupled, distributed, elastic, liberated micro-services)
资源隔离(Resource isolation)
质量利用(Resource utilization)
Etcd:键值数据库,在k8s中尽量使用SSD硬盘,注意备份,生产环境建议三个以上集群节点;
参考:http://t.zoukankan.com/Leo_wl-p-6513008.html
Kube-APIServer:集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资源配置、整个集群安全机制的入口。
Controller-Manager:集群的状态管理器,保证Pod或其他资源达到期望值,也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。
Scheduler:集群的调度中心,它会根据指定的一系列条件,选择一个或一批最佳的节点,然后部署我们的Pod。
Etcd:键值数据库,报错一些集群的信息,一般生产环境中建议部署三个以上节点(奇数个)。
Kubelet:负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,负责与Master节点通信,并管理节点上面的Pod。
Kube-proxy:负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器.
Calico:符合CNI标准的网络插件,给每个Pod生成一个唯一的IP地址,并且把每个节点当做一个路由器。Cilium
CoreDNS:用于Kubernetes集群内部Service的解析,可以让Pod把Service名称解析成IP地址,然后通过Service的IP地址进行连接到对应的应用上。
Docker:容器引擎,负责对容器的管理。
查看Kube-proxy工作模式:curl 127.0.0.1:10249/proxyMode
查看IPVS规则:ipvsadm -L -n