什么是k8s1
Kubernetes(k8s)是一个基于容器的集群管理平台。它拥有庞大,快速发展的生态系统,是基于 Google 多年大规模容器管理技术 Borg 的开源版本。
k8s能做什么,k8s提供了一个弹性运行分布式系统的框架。它负责您的扩展要求,故障转移,部署模式等。支持服务发现和负载平衡,存储编排,自动部署和回滚,(自动装箱)资源分配与限制,自我修复,密钥和配置管理这些功能。
容器发展史:戳这里
一些名词和组件
名词解释
可以看到指南中涉及到很多对象,这些在k8s管理中都会被经常使用到:
container,pod,label,node,service,replication controller,volume,namespace
大致关系:
简单总结下就是:
- node: 提供基础的cpu,内存等资源,可以是物理机或虚拟机,分master和worker,可运行多个pod;
- container: 运行在pod中,创建pod时可一次创建一个或多个,不能被直接访问,容器间通过lo虚拟接口通信;
- pod: k8s最基本的操作单元,可直接被访问,提供统一服务,pod中可以运行多个容器;
- label: 标签,是附着在资源对象上的一组或多组 Key/Value 键值对,用于指定对用户有意义的对象的属性,标签对内核系统是没有直接意义的,在创建对象时就可以指定;
一般其他资源关联pod时就通过pod的label和label选择器关联。 - replication controller: 确保任何时候集群中有指定数量的 pod 副本(replicas)在运行。管理 pod 的生命周期,包括扩/缩容,滚动部署和监控等功能。方便支持k8s高可用,弹性伸缩这些功能;
- service: 类似iptables,service中定义了一系列映射规则,将pod服务端口映射到固定ip端口,对集群内外提供统一服务接口。原因是pod中的服务默认不能被集群外访问,并且pod是动态的,hostname和ip不固定,所以直接访问pod的服务比较困难。
- volume: 存储卷,挂载在pod上。防止pod被删数据丢失;方便外部配置,也方便多个pod共享配置/存储等,和docker的volume类似;
- namespace: 为集群提供虚拟的隔离作用,上面那些对象创建时都需要指定命名空间,默认是default;
组件
支撑上面那些对象和对象间调度的一些重要组件:
k8s 的node分master和worker:
master的组件: API Server ,Etcd,Scheduler,Controller-Manager
worker的组件: Kube-Proxy,Kubelet, docker, flannel
大致关系: